liuyc 2 жил өмнө
parent
commit
155ae9465f

+ 88 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/excel/WbsExcelUtil.java

@@ -7,14 +7,102 @@ import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.utils.SecureUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.manager.vo.ImportWbsNodeVO;
+import org.springblade.manager.vo.WbsTreeContractVO;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.*;
 import java.util.*;
+import java.util.stream.Collectors;
 
 
 public class WbsExcelUtil {
 
+    /*public static void main(String[] args) throws IOException, ClassNotFoundException {
+        WbsExcelUtil excelUtil = new WbsExcelUtil();
+        //读取excel数据
+        ArrayList<Map<String, String>> result = excelUtil.readExcelToObj("C:\\Users\\泓创开发\\Desktop\\excel节点模板\\隧道工程.xls");
+        //result.forEach(System.out::println);
+
+        //构造
+        List<ImportWbsNodeVO> list = new ArrayList<>();
+        int rowNumber = 1;
+        for (Map<String, String> row : result) { //行
+
+            List<String> parentCode = new ArrayList<>();
+            Map<String, ImportWbsNodeVO> mapCol = new HashMap<>();
+
+            for (Map.Entry<String, String> col : row.entrySet()) { //列
+                ImportWbsNodeVO wbsNodeVO = new ImportWbsNodeVO();
+                if (col.getValue().equals("")) {
+                    continue;
+                }
+
+                if (mapCol.size() > 0) {
+                    wbsNodeVO.setRow(rowNumber);
+                    wbsNodeVO.setId(SnowFlakeUtil.getId());
+                    wbsNodeVO.setNodeName(col.getValue());
+                    wbsNodeVO.setNodeType(col.getKey());
+                    wbsNodeVO.setAncestors(null);
+                    wbsNodeVO.setCode(rowNumber + "-" + col.getKey());
+
+                    parentCode.add(wbsNodeVO.getCode());
+                    Iterator<String> iterator = parentCode.iterator();
+                    while (iterator.hasNext()) {
+                        String next = iterator.next();
+                        if (!next.equals(wbsNodeVO.getCode())) {
+                            wbsNodeVO.setParentCode(next);
+                            if (wbsNodeVO.getParentCode() != null) {
+                                iterator.remove();
+                            }
+                        }
+                    }
+
+                    //获取上级obj
+                    Iterator<Map.Entry<String, ImportWbsNodeVO>> iteratorMap = mapCol.entrySet().iterator();
+                    while (iteratorMap.hasNext()) {
+                        Map.Entry<String, ImportWbsNodeVO> importWbsNodeVOEntry = iteratorMap.next();
+                        if (wbsNodeVO.getParentCode().equals(importWbsNodeVOEntry.getValue().getCode())) {
+                            wbsNodeVO.setParentId(importWbsNodeVOEntry.getValue().getId());
+                        }
+                    }
+
+                    mapCol.put(wbsNodeVO.getNodeType(), wbsNodeVO);
+
+                } else {
+                    wbsNodeVO.setRow(rowNumber);
+                    wbsNodeVO.setId(SnowFlakeUtil.getId());
+                    wbsNodeVO.setNodeName(col.getValue());
+                    wbsNodeVO.setNodeType(col.getKey());
+                    wbsNodeVO.setParentId(0L);
+                    wbsNodeVO.setAncestors(null);
+                    wbsNodeVO.setCode(rowNumber + "-" + col.getKey());
+
+                    parentCode.add(wbsNodeVO.getCode());
+                    Iterator<String> iterator = parentCode.iterator();
+                    while (iterator.hasNext()) {
+                        String next = iterator.next();
+                        if (!next.equals(wbsNodeVO.getCode())) {
+                            wbsNodeVO.setParentCode(next);
+                            if (wbsNodeVO.getParentCode() != null) {
+                                iterator.remove();
+                            }
+                        }
+                    }
+                    mapCol.put(wbsNodeVO.getNodeType(), wbsNodeVO);
+                }
+                list.add(wbsNodeVO);
+            }
+            rowNumber++;
+        }
+
+        list.forEach(System.out::println);
+
+    }*/
 
     /**
      * 读取excel数据

+ 34 - 13
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -581,12 +581,22 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                 WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda()
                         .eq(WbsTree::getId, wbsTreePrivate.getId())
                 );
-                List<WbsTree> wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
-                        .eq(WbsTree::getWbsId, wbsTree.getWbsId())
-                        .eq(WbsTree::getType, 2)
-                        .eq(WbsTree::getStatus, 1)
-                        .like(WbsTree::getAncestors, wbsTree.getId())
-                );
+                List<WbsTree> wbsTreesPublicTables;
+                if (wbsTree.getAncestors().equals("0")) {
+                    //根节点
+                    wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
+                            .eq(WbsTree::getWbsId, wbsTree.getWbsId())
+                            .eq(WbsTree::getType, 2)
+                            .eq(WbsTree::getStatus, 1)
+                    );
+                } else {
+                    wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
+                            .eq(WbsTree::getWbsId, wbsTree.getWbsId())
+                            .eq(WbsTree::getType, 2)
+                            .eq(WbsTree::getStatus, 1)
+                            .like(WbsTree::getAncestors, wbsTree.getId())
+                    );
+                }
 
                 //获取当前项目树下的元素表 节点
                 List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
@@ -683,13 +693,24 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                 //根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
                 WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
                 //获取当前私有引用树的元素表信息
-                List<WbsTreePrivate> wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                        .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
-                        .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
-                        .eq(WbsTreePrivate::getType, 2)
-                        .eq(WbsTreePrivate::getStatus, 1)
-                        .like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId())
-                );
+                List<WbsTreePrivate> wbsTreePrivateRootTables;
+                if (wbsTreePrivate.getAncestors().equals("0")) {
+                    //根节点
+                    wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                            .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
+                            .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
+                            .eq(WbsTreePrivate::getType, 2)
+                            .eq(WbsTreePrivate::getStatus, 1)
+                    );
+                } else {
+                    wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                            .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
+                            .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
+                            .eq(WbsTreePrivate::getType, 2)
+                            .eq(WbsTreePrivate::getStatus, 1)
+                            .like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId())
+                    );
+                }
 
                 //获取当前项目选择的节点下的所有元素表 节点
                 List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()

+ 2 - 0
blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMapper.java

@@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.manager.entity.WbsTableOwnerRole;
 import org.springblade.manager.vo.WbsTableOwnerRoleVO;
+import org.springblade.system.entity.Menu;
 import org.springblade.system.entity.Role;
 import org.springblade.system.vo.RoleTypeVO;
 import org.springblade.system.vo.RoleVO;
@@ -81,4 +82,5 @@ public interface RoleMapper extends BaseMapper<Role> {
     List<RoleTypeVO> getRoleTypeInfo();
 
     List<RoleTypeVO> getRoleInfoByParentId(String ParentId);
+
 }

+ 1 - 0
blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMapper.xml

@@ -98,4 +98,5 @@
     <select id="getRoleInfoByParentId" resultMap="RoleTypeVOMap">
         select id,id as `value`,role_name as label from blade_role where is_deleted = 0 and parent_id=#{ParentId}
     </select>
+
 </mapper>

+ 1 - 0
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleServiceImpl.java

@@ -34,6 +34,7 @@ import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.entity.WbsTableOwnerRole;
 import org.springblade.manager.vo.WbsTableOwnerRoleVO;
 import org.springblade.system.dto.RoleDTO;
+import org.springblade.system.entity.Menu;
 import org.springblade.system.entity.Role;
 import org.springblade.system.entity.RoleMenu;
 import org.springblade.system.entity.RoleScope;