浏览代码

修改wbs节点树导入BUG

liuyc 3 年之前
父节点
当前提交
fac05a372d

+ 12 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java

@@ -268,12 +268,20 @@ public class WbsTreeController extends BladeController {
         if (wbsTree1.getProjectNodeId().equals(parentId)) {
             /*覆盖*/
             wbsTreeService.deleteBatchByProjectNodeId(wbsTree1.getProjectNodeId());
-            wbsTreeService.importWbsTree(excelFile, wbsTreeFu, wbsTree1);
-            return R.success("覆盖导入成功");
+            String result = wbsTreeService.importWbsTree(excelFile, wbsTreeFu, wbsTree1);
+            if (result.equals("1")) {
+                return R.fail("请选择正确模板导入");
+            } else {
+                return R.success("覆盖导入成功");
+            }
         } else {
             //新增
-            wbsTreeService.importWbsTree(excelFile, wbsTreeFu, wbsTree1);
-            return R.success("新增导入成功");
+            String result = wbsTreeService.importWbsTree(excelFile, wbsTreeFu, wbsTree1);
+            if (result.equals("1")) {
+                return R.fail("请选择正确模板导入");
+            } else {
+                return R.success("新增导入成功");
+            }
         }
     }
 

+ 5 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/excel/WbsExcelUtil.java

@@ -1,5 +1,7 @@
 package org.springblade.manager.excel;
 
+import cn.hutool.core.exceptions.ExceptionUtil;
+import org.apache.commons.lang.exception.ExceptionUtils;
 import org.apache.poi.hssf.usermodel.HSSFCell;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
@@ -26,8 +28,7 @@ public class WbsExcelUtil {
      *
      * @param path
      */
-    public ArrayList<Map<String, String>> readExcelToObj(String path) {
-
+    public ArrayList<Map<String, String>> readExcelToObj(String path) throws IOException {
         Workbook wb = null;
         ArrayList<Map<String, String>> result = null;
         try {
@@ -37,6 +38,8 @@ public class WbsExcelUtil {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
+        }finally {
+            wb.close();
         }
         return result;
     }

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeService.java

@@ -88,7 +88,7 @@ public interface IWbsTreeService extends BaseService<WbsTree> {
      */
     List<WbsFormElement> selectFormElements(String id);
 
-    Boolean importWbsTree(MultipartFile excelFile, WbsTree wbsTreeFu, WbsTree wbsTree1) throws IOException;
+    String importWbsTree(MultipartFile excelFile, WbsTree wbsTreeFu, WbsTree wbsTree1) throws IOException;
 
     String submitWbsTreeInProject(WbsTreeContractDTO pawDTO);
 

+ 47 - 42
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -173,56 +173,61 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
 
     @Override
-    public Boolean importWbsTree(MultipartFile excelFile, WbsTree wbsTreeFu, WbsTree wbsTree1) throws IOException {
+    public String importWbsTree(MultipartFile excelFile, WbsTree wbsTreeFu, WbsTree wbsTree1) throws IOException {
         //赋值
         wbsTreeFu.setAncestors("0");
         wbsTree1.setProjectNodeId(wbsTree1.getId());
         //获取文件路径
         File file = WbsExcelUtil.convert(excelFile);
         String canonicalPath = file.getCanonicalPath();
-        //解析excel
-        WbsExcelUtil excelUtil = new WbsExcelUtil();
-        ArrayList<Map<String, String>> result = excelUtil.readExcelToObj(canonicalPath);
-        for (Map<String, String> map : result) {
-            map.forEach((nodeType, nodeName) -> {
-                WbsTree wbsTreeZi = new WbsTree();
-                if (StringUtils.isNotEmpty(nodeName)) {
-                    //初始化默认值
-                    wbsTreeZi.setTenantId(AuthUtil.getTenantId());
-                    wbsTreeZi.setDeptName(nodeName);
-                    wbsTreeZi.setDeptCategory(Integer.valueOf(nodeType));
-                    wbsTreeZi.setWbsId(wbsTreeFu.getWbsId());
-                    wbsTreeZi.setParentId(wbsTreeFu.getParentId());
-                    wbsTreeZi.setAncestors(wbsTreeFu.getAncestors());
-                    wbsTreeZi.setProjectNodeId(wbsTree1.getProjectNodeId());
-                    //新增节点返回未创建成功查询出来的wbsTree对象、创建成功后的wbsTreeZi对象
-                    WbsTree wbsTree = importTree(wbsTreeZi);
-                    //后置初始化默认值
-                    if (wbsTree == null) {
-                        Long id = wbsTreeZi.getId();
-                        //设置ancestors祖级id集合
-                        StringBuilder stringBuffer = new StringBuilder();
-                        StringBuilder appendStr = stringBuffer.append(",").append(wbsTreeZi.getParentId());
-                        String ancestors = wbsTreeZi.getAncestors() + appendStr;
-                        //修改ancestors的值
-                        updateDate(ancestors, id);
-                        wbsTreeFu.setParentId(id);
-                        wbsTreeFu.setAncestors(ancestors);
-                    } else {
-                        wbsTreeFu.setParentId(wbsTree.getId());
-                        wbsTreeFu.setAncestors(wbsTree.getAncestors());
+        try {
+            //解析excel
+            WbsExcelUtil excelUtil = new WbsExcelUtil();
+            ArrayList<Map<String, String>> result = excelUtil.readExcelToObj(canonicalPath);
+            for (Map<String, String> map : result) {
+                map.forEach((nodeType, nodeName) -> {
+                    WbsTree wbsTreeZi = new WbsTree();
+                    if (StringUtils.isNotEmpty(nodeName)) {
+                        //初始化默认值
+                        wbsTreeZi.setTenantId(AuthUtil.getTenantId());
+                        wbsTreeZi.setDeptName(nodeName);
+                        wbsTreeZi.setDeptCategory(Integer.valueOf(nodeType));
+                        wbsTreeZi.setWbsId(wbsTreeFu.getWbsId());
+                        wbsTreeZi.setParentId(wbsTreeFu.getParentId());
+                        wbsTreeZi.setAncestors(wbsTreeFu.getAncestors());
+                        wbsTreeZi.setProjectNodeId(wbsTree1.getProjectNodeId());
+                        //新增节点返回未创建成功查询出来的wbsTree对象、创建成功后的wbsTreeZi对象
+                        WbsTree wbsTree = importTree(wbsTreeZi);
+                        //后置初始化默认值
+                        if (wbsTree == null) {
+                            Long id = wbsTreeZi.getId();
+                            //设置ancestors祖级id集合
+                            StringBuilder stringBuffer = new StringBuilder();
+                            StringBuilder appendStr = stringBuffer.append(",").append(wbsTreeZi.getParentId());
+                            String ancestors = wbsTreeZi.getAncestors() + appendStr;
+                            //修改ancestors的值
+                            updateDate(ancestors, id);
+                            wbsTreeFu.setParentId(id);
+                            wbsTreeFu.setAncestors(ancestors);
+                        } else {
+                            wbsTreeFu.setParentId(wbsTree.getId());
+                            wbsTreeFu.setAncestors(wbsTree.getAncestors());
+                        }
                     }
-                }
-            });
-        }
-        //修改根节点ProjectNodeId
-        baseMapper.updateById(wbsTree1);
-        File file2 = new File(canonicalPath);
-        if (file2.isFile() && file2.exists()) {
-            System.gc();    //回收资源
-            file2.delete();
+                });
+            }
+            //修改根节点ProjectNodeId
+            baseMapper.updateById(wbsTree1);
+            return "2";
+        } catch (Exception e) {
+            return "1";
+        } finally {
+            File file2 = new File(canonicalPath);
+            if (file2.isFile() && file2.exists()) {
+                file2.delete();
+                System.gc();    //回收资源
+            }
         }
-        return true;
     }