liuyc пре 3 година
родитељ
комит
73176a7d83
13 измењених фајлова са 229 додато и 67 уклоњено
  1. 13 7
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsFormElementController.java
  2. 13 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java
  3. 50 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java
  4. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/excel/WbsExcelUtil.java
  5. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsFormElementMapper.java
  6. 4 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsFormElementMapper.xml
  7. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java
  8. 32 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml
  9. 3 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsFormElementService.java
  10. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreePrivateService.java
  11. 81 40
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsFormElementServiceImpl.java
  12. 9 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java
  13. 18 14
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

+ 13 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsFormElementController.java

@@ -67,11 +67,7 @@ public class WbsFormElementController extends BladeController {
     @ApiOperation(value = "新增", notes = "传入wbsFormElement")
     public R save(@Valid @RequestBody WbsFormElementDTO wbsFormElement) {
         //新增同步元素字段到实体表
-        boolean b = wbsFormElementService.saveAndSyn(wbsFormElement, wbsFormElement.getInitTableName());
-        if (b) {
-            return R.data(wbsFormElement, "新增成功");
-        }
-        return R.fail("新增失败");
+        return wbsFormElementService.saveAndSyn(wbsFormElement, wbsFormElement.getInitTableName());
     }
 
 
@@ -131,8 +127,18 @@ public class WbsFormElementController extends BladeController {
     @ApiOperation(value = "导入WBS元素数据", notes = "传入excel")
     public R importRegion(MultipartFile file) {
         List<WbsFormElementExcel> list = ExcelUtil.read(file, WbsFormElementExcel.class);
-        /*WbsFormElementImporter importer = new WbsFormElementImporter(wbsFormElementService, isCovered == 1, tableId);
-        ExcelUtil.save(file, importer, WbsFormElementExcel.class);*/
+        for (WbsFormElementExcel wbsFE : list) {
+            if (("字符串").equals(wbsFE.getElementType()) || ("string").equals(wbsFE.getElementType())) {
+                wbsFE.setElementType("1");
+            } else if (("整数").equals(wbsFE.getElementType()) || ("bigint").equals(wbsFE.getElementType())) {
+                wbsFE.setElementType("2");
+            } else if (("小数").equals(wbsFE.getElementType()) || ("decimal").equals(wbsFE.getElementType())) {
+                wbsFE.setElementType("3");
+            } else if (("日期").equals(wbsFE.getElementType()) || ("datetime").equals(wbsFE.getElementType())) {
+                wbsFE.setElementType("4");
+                wbsFE.setElementLength("0");
+            }
+        }
         return R.data(list, "操作成功");
     }
 

+ 13 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java

@@ -236,8 +236,19 @@ public class WbsTreeController extends BladeController {
         boolean b = wbsFormElementService.updateBatchById(wbsFormElementList);
         if (b) {
             //同步修改实体表类型字段类型
-            wbsFormElementService.updateAndSyn(wbsFormElementList, initTableName);
-            return R.success("修改成功");
+            String s = wbsFormElementService.updateAndSyn(wbsFormElementList, initTableName);
+            switch (s) {
+                case "1":
+                    return R.fail("请输入正确字符串长度,范围为10-1000之间");
+                case "2":
+                    return R.fail("请输入正确整数长度,范围为10-255之间");
+                case "3":
+                    return R.fail("请输入正确小数长度,范围为10-65之间");
+                case "0":
+                    return R.success("修改成功");
+                default:
+                    return R.success("修改失败");
+            }
         }
         return R.fail("修改失败");
     }

+ 50 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java

@@ -2,15 +2,25 @@ package org.springblade.manager.controller;
 
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.service.IWbsTreePrivateService;
 import org.springblade.manager.vo.WbsNodeTableVO;
+import org.springblade.manager.vo.WbsTreePrivateVO;
+import org.springblade.manager.vo.WbsTreeVO;
+import org.springblade.manager.wrapper.WbsTreePrivateWrapper;
+import org.springblade.manager.wrapper.WbsTreeWrapper;
 import org.springblade.system.cache.DictCache;
 import org.springblade.system.enums.DictEnum;
 import org.springframework.web.bind.annotation.*;
@@ -78,4 +88,44 @@ public class WbsTreePrivateController extends BladeController {
     }
 
 
+    /**
+     * wbs私有树懒加载获取项目私有节点树形结构
+     */
+    @GetMapping("/lazy-tree")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "项目级懒加载节点树形结构", notes = "传入wbsId,parentId,,项目id,请求头token")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "wbsId", value = "wbsId", required = true),
+            @ApiImplicitParam(name = "parentId", value = "父级id", required = true),
+            @ApiImplicitParam(name = "projectId", value = "项目id", required = true),
+    })
+    public R<List<WbsTreePrivateVO>> lazyTree(String wbsId, Long parentId, String projectId, BladeUser bladeUser, String tenantId) {
+        List<WbsTreePrivateVO> tree = wbsTreePrivateService.lazyTree(wbsId, Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()), parentId, projectId);
+        if (tree != null && tree.size() > 0) {
+            return R.data(tree);
+        }
+        return R.fail(200, "未查询到信息");
+    }
+
+    /**
+     * 获取当前节点详情
+     */
+
+    @GetMapping("/detail")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "详情", notes = "传入主键id,wbsId,项目id,请求头token")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "id", value = "节点id", required = true),
+            @ApiImplicitParam(name = "wbsId", value = "wbsId", required = true),
+            @ApiImplicitParam(name = "projectId", value = "项目id", required = true),
+    })
+    public R<WbsTreePrivateVO> detail(WbsTreePrivate wbsTree) {
+        WbsTreePrivate detail = wbsTreePrivateService.getOne(Condition.getQueryWrapper(wbsTree));
+        if (detail != null) {
+            return R.data(WbsTreePrivateWrapper.build().entityVO(detail));
+        }
+        return R.fail(200, "未查询到信息");
+    }
+
+
 }

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

@@ -14,7 +14,7 @@ import java.io.*;
 import java.util.*;
 
 public class WbsExcelUtil {
-//    public static void main(String[] args) {
+//    public static void main(String[] args) throws IOException {
 //        WbsExcelUtil excelUtil = new WbsExcelUtil();
 //        //读取excel数据
 //        ArrayList<Map<String, String>> result = excelUtil.readExcelToObj("D:\\Download\\WBS划分模板1.xls");

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsFormElementMapper.java

@@ -52,4 +52,6 @@ public interface WbsFormElementMapper extends BaseMapper<WbsFormElement> {
 
     void updateFiledType(String initTableName, String eKey, String eType, Integer eLength);
 
+    int judgeFiled(String eKey, String tableName);
+
 }

+ 4 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsFormElementMapper.xml

@@ -21,6 +21,7 @@
         <result column="e_inspection_method" property="eInspectionMethod"/>
     </resultMap>
 
+
     <update id="createTable">
         create table ${newTableName} (
         `id` bigint(20) NOT NULL,
@@ -44,5 +45,8 @@
     <select id="selectWbsFormElementPage" resultMap="wbsFormElementResultMap">
         select * from m_wbs_form_element where is_deleted = 0
     </select>
+    <select id="judgeFiled" resultType="Integer">
+     select count(*) from information_schema.columns where table_name = &quot;${tableName}&quot; and column_name = &quot;${eKey}&quot;
+    </select>
 
 </mapper>

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java

@@ -59,4 +59,5 @@ public interface WbsTreePrivateMapper extends BaseMapper<WbsTreePrivate> {
 
     int updateByCondition1(String id, String wbsId, String projectId);
 
+    List<WbsTreePrivateVO> lazyTree(String wbsId, String tenantId, Long parentId, String projectId);
 }

+ 32 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -119,6 +119,38 @@
     </update>
 
 
+    <select id="lazyTree" resultMap="treeNodeResultMap">
+        SELECT
+        dept.type AS "type",
+        dept.table_type,
+        dept.id,
+        dept.parent_id,
+        dept.dept_name AS title,
+        dept.id AS "value",
+        dept.id AS "key",
+        (
+        SELECT
+        CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
+        FROM
+        m_wbs_tree_private
+        WHERE
+        parent_id = dept.id and is_deleted = 0
+        ) AS "has_children"
+        FROM
+        m_wbs_tree_private dept
+        WHERE
+        dept.parent_id = #{parentId} AND dept.is_deleted = 0
+        <if test="tenantId!=null and tenantId!=''">
+            and dept.tenant_id = #{tenantId}
+        </if>
+        AND dept.project_id = #{projectId}
+        AND dept.wbs_id = #{wbsId}
+        AND dept.type = 1
+        AND status = 1
+        ORDER BY dept.sort
+    </select>
+
+
     <select id="selectAll" resultMap="resultMap2">
         SELECT
         wtp.p_key_id AS "pKeyId",

+ 3 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsFormElementService.java

@@ -19,6 +19,7 @@ package org.springblade.manager.service;
 
 import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.tool.api.R;
 import org.springblade.manager.dto.WbsFormElementDTO;
 import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.excel.WbsFormElementExcel;
@@ -46,10 +47,10 @@ public interface IWbsFormElementService extends BaseService<WbsFormElement> {
 
     void importElement(List<WbsFormElementExcel> data, Boolean isCovered,String tableId);
 
-    boolean saveAndSyn(WbsFormElement wbsFormElement, String tableName);
+    R saveAndSyn(WbsFormElement wbsFormElement, String tableName);
 
     boolean deleteAndSyn(String ids, String elementName, String tableName);
 
-    boolean updateAndSyn(List<WbsFormElement> wbsFormElementList,String initTableName);
+    String updateAndSyn(List<WbsFormElement> wbsFormElementList,String initTableName);
 
 }

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreePrivateService.java

@@ -23,4 +23,6 @@ public interface IWbsTreePrivateService extends BaseService<WbsTreePrivate> {
 
 
     boolean removeTableByCondition(String id, String wbsId, String projectId);
+
+    List<WbsTreePrivateVO> lazyTree(String wbsId, String tenantId, Long parentId, String projectId);
 }

+ 81 - 40
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsFormElementServiceImpl.java

@@ -17,25 +17,21 @@
 package org.springblade.manager.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.core.tool.utils.DateUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.commons.lang.StringUtils;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.manager.dto.WbsFormElementDTO;
-import org.springblade.manager.entity.WbsFormInitEntity;
+import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.excel.WbsFormElementExcel;
 import org.springblade.manager.mapper.WbsFormElementMapper;
 import org.springblade.manager.service.IWbsFormElementService;
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.vo.WbsFormElementVO;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 
 /**
@@ -161,56 +157,90 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean saveAndSyn(WbsFormElement wbsFormElement, String tableName) {
+    public R saveAndSyn(WbsFormElement wbsFormElement, String tableName) {
         //新增元素字段
         //查询当前元素表中元素的最后一个key_?值
         QueryWrapper<WbsFormElement> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("f_id", wbsFormElement.getFId());
         List<WbsFormElement> wbsFormElements = baseMapper.selectList(queryWrapper);
         String substring = "";
-        for (WbsFormElement formElement : wbsFormElements) {
-            String eKey = formElement.getEKey();
-            substring = eKey.substring(eKey.length() - 1);
-        }
-        long newFiled = Long.parseLong(substring) + 1;
-        String substring1 = "key_" + newFiled;
-        wbsFormElement.setEKey(substring1);
-        if (wbsFormElement.getEType() == 4) {
-            wbsFormElement.setELength(0);
+        List<String> eKeyNum = new ArrayList<>();
+        if (wbsFormElements.size() > 0) {
+            for (WbsFormElement formElement : wbsFormElements) {
+                String eKey = formElement.getEKey();
+                substring = eKey.split("_")[1];
+            }
+            if (StringUtils.isNotEmpty(substring)) {
+                long newFiled = Long.parseLong(substring) + 1;
+                String substring1 = "key_" + newFiled;
+                eKeyNum.add(substring1);
+                if (wbsFormElement.getEType() == 4) {
+                    wbsFormElement.setELength(0);
+                }
+            }
+            wbsFormElement.setEKey(eKeyNum.get(eKeyNum.size() - 1));
+        } else {
+            wbsFormElement.setEKey("key_1");
         }
-        int insert = baseMapper.insert(wbsFormElement);
-        if (insert > 0) {
-            String newName = wbsFormElement.getEKey();
-            //同步
-            StringBuffer sbr1 = new StringBuffer();
-            String fieldType = judgeDataType(wbsFormElement.getEType());
-            if ("varchar".equals(fieldType)) {
-                sbr1.append(" " + fieldType + "(" + wbsFormElement.getELength() + ")");
-            } else if ("bigint".equals(fieldType)) {
-                sbr1.append(" " + fieldType + "(" + wbsFormElement.getELength() + ")");
-            } else if ("decimal".equals(fieldType)) {
-                sbr1.append(" " + fieldType + "(" + wbsFormElement.getELength() + ")");
-            } else if ("datetime".equals(fieldType)) {
-                sbr1.append(" " + fieldType + "(" + 0 + ")");
+        String newName = wbsFormElement.getEKey();
+        //同步
+        StringBuilder sbr1 = new StringBuilder();
+        String fieldType = judgeDataType(wbsFormElement.getEType());
+        if ("varchar".equals(fieldType)) {
+            if (wbsFormElement.getELength() > 1000 || wbsFormElement.getELength() < 10) {
+                return R.fail("请输入正确的字符串长度,范围为10-1000");
+            } else {
+                baseMapper.insert(wbsFormElement);
+                sbr1.append(" ").append(fieldType).append("(").append(wbsFormElement.getELength()).append(")");
+                String sql = newName + " " + sbr1;
+                baseMapper.alterAddFiled(sql, tableName);
+                return R.data(wbsFormElement, "操作成功");
             }
+        } else if ("bigint".equals(fieldType)) {
+            if (wbsFormElement.getELength() > 255 || wbsFormElement.getELength() < 10) {
+                return R.fail("请输入正确的整数长度,范围为10-255");
+            } else {
+                baseMapper.insert(wbsFormElement);
+                sbr1.append(" ").append(fieldType).append("(").append(wbsFormElement.getELength()).append(")");
+                String sql = newName + " " + sbr1;
+                baseMapper.alterAddFiled(sql, tableName);
+                return R.data(wbsFormElement, "操作成功");
+            }
+        } else if ("decimal".equals(fieldType)) {
+            if (wbsFormElement.getELength() > 65 || wbsFormElement.getELength() < 10) {
+                return R.fail("请输入正确的小数长度,范围为10-65");
+            } else {
+                baseMapper.insert(wbsFormElement);
+                sbr1.append(" ").append(fieldType).append("(").append(wbsFormElement.getELength()).append(")");
+                String sql = newName + " " + sbr1;
+                baseMapper.alterAddFiled(sql, tableName);
+                return R.data(wbsFormElement, "操作成功");
+            }
+        } else if ("datetime".equals(fieldType)) {
+            baseMapper.insert(wbsFormElement);
+            sbr1.append(" ").append(fieldType).append("(").append(0).append(")");
             String sql = newName + " " + sbr1;
             baseMapper.alterAddFiled(sql, tableName);
-            return true;
+            return R.data(wbsFormElement, "操作成功");
         }
-        return false;
+        return R.fail("操作失败");
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean deleteAndSyn(String ids, String eKey, String tableName) {
         deleteLogic(Func.toLongList(ids));
-        //同步删除实体表字段 TODO 删除前判断实体表是否关联数据
-        baseMapper.deleteTableFiled(eKey, tableName);
+        //删除前判断是否存在该key
+        int row = baseMapper.judgeFiled(eKey, tableName);
+        if (row > 0) {
+            //同步删除实体表字段 TODO 删除前判断实体表是否关联数据
+            baseMapper.deleteTableFiled(eKey, tableName);
+        }
         return true;
     }
 
     @Override
-    public boolean updateAndSyn(List<WbsFormElement> wbsFormElementList, String initTableName) {
+    public String updateAndSyn(List<WbsFormElement> wbsFormElementList, String initTableName) {
         QueryWrapper<WbsFormElement> queryWrapper = new QueryWrapper<>();
         String fId = "";
         for (WbsFormElement wbsFormElement : wbsFormElementList) {
@@ -222,8 +252,19 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
             String eKey = wbsFormElement.getEKey();
             Integer eLength = wbsFormElement.getELength();
             String eType = judgeDataType(wbsFormElement.getEType());
-            baseMapper.updateFiledType(initTableName, eKey, eType, eLength);
+            if (eType.equals("bigint") && (eLength > 255 || eLength < 10)) {  //整数
+                return "2";
+            } else if (eType.equals("varchar") && (eLength > 1000 || eLength < 10)) {  //字符串
+                return "1";
+            } else if (eType.equals("decimal") && (eLength > 65 || eLength < 10)) {  //小数
+                return "3";
+            }
+            try {
+                baseMapper.updateFiledType(initTableName, eKey, eType, eLength);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
         }
-        return true;
+        return "0";
     }
 }

+ 9 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -60,13 +60,21 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 
     @Override
     public boolean removeTableByCondition(String id, String wbsId, String projectId) {
-        int integer = baseMapper.updateByCondition1(id,wbsId,projectId);
+        int integer = baseMapper.updateByCondition1(id, wbsId, projectId);
         if (integer > 0) {
             return true;
         }
         return false;
     }
 
+    @Override
+    public List<WbsTreePrivateVO> lazyTree(String wbsId, String tenantId, Long parentId, String projectId) {
+        if (AuthUtil.isAdministrator()) {
+            tenantId = StringPool.EMPTY;
+        }
+        return ForestNodeMerger.merge(baseMapper.lazyTree(wbsId, tenantId, parentId, projectId));
+    }
+
 
     public List<WbsTreePrivate> findAllNodeList(String wbsTreeIds, String projectId) {
         String[] ids = wbsTreeIds.split(",");

+ 18 - 14
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -161,13 +161,15 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     }
 
 
-    private String selectTableIdByTableName(String deptName) {
+    private String selectTableIdByTableName(String id) {
         QueryWrapper<WbsTree> queryWrapper = new QueryWrapper<>();
-        queryWrapper.in("dept_name", deptName);
+        queryWrapper.in("id", id);
         WbsTree wbsTree = wbsTreeMapper.selectOne(queryWrapper);
-        if (!("").equals(wbsTree) && wbsTree == null) {
+        if (!("").equals(wbsTree) && wbsTree != null) {
             return "-1";
+
         }
+        assert wbsTree != null;
         return String.valueOf(wbsTree.getId());
     }
 
@@ -206,7 +208,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                             StringBuilder appendStr = stringBuffer.append(",").append(wbsTreeZi.getParentId());
                             String ancestors = wbsTreeZi.getAncestors() + appendStr;
                             //修改ancestors的值
-                            updateDate(ancestors, id);
+                            updateData(ancestors, id);
                             wbsTreeFu.setParentId(id);
                             wbsTreeFu.setAncestors(ancestors);
                         } else {
@@ -225,7 +227,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             File file2 = new File(canonicalPath);
             if (file2.isFile() && file2.exists()) {
                 file2.delete();
-                System.gc();    //回收资源
+                System.gc();
             }
         }
     }
@@ -238,7 +240,10 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         queryWrapper.eq("dept_name", wbsTreeZi.getDeptName());
         queryWrapper.eq("dept_category", wbsTreeZi.getDeptCategory());
         queryWrapper.eq("project_node_id", wbsTreeZi.getProjectNodeId());
+        queryWrapper.ne("ancestors", wbsTreeZi.getAncestors());
+        //todo
         WbsTree wbsTrees = baseMapper.selectOne(queryWrapper);
+        //去重
         if (wbsTrees == null) {
             //初始化默认值
             wbsTreeZi.setStatus(1);
@@ -260,7 +265,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     }
 
 
-    private boolean updateDate(String ancestors, Long id) {
+    private boolean updateData(String ancestors, Long id) {
         Integer row = baseMapper.updateById2(ancestors, id);
         if (row > 0) {
             return true;
@@ -454,23 +459,22 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         String realName = getPinyin(formElementDTO.getDeptName(), "");
         String newTableName = "m_wbs_form_" + DateUtil.time() + "_" + realName;
         formElementDTO.setInitTableName(newTableName);
+
         //创建元素表
         boolean b1 = submit2(formElementDTO);
-        String tableId = selectTableIdByTableName(formElementDTO.getDeptName());
-        if (("-1").equals(tableId)) {
-            return R.fail("表单名已经存在,请重新填写表单名");
-        }
         List<WbsFormElement> elementList = formElementDTO.getElementList();
         int i = 1;
         for (WbsFormElement wbsFormElement : elementList) {
-            //当前元素表中元素对应实体表唯一key值
+            //当前元素表中元素对应实体表唯一key值、fId
             wbsFormElement.setEKey("key_" + i++);
-            wbsFormElement.setFId(tableId);
+            wbsFormElement.setFId(String.valueOf(formElementDTO.getId()));
         }
         //新增元素
         boolean b2 = wbsFormElementService.saveBatch(elementList);
-        List<WbsFormElement> list = wbsFormElementService.selectElementListByFid(tableId);
-        //初始化实体表单
+
+        //找到当前元素表中所有元素
+        List<WbsFormElement> list = wbsFormElementService.selectElementListByFid(String.valueOf(formElementDTO.getId()));
+        //初始化实体表
         Boolean b3 = wbsFormElementService.initTable(list, newTableName);
         if (b1 && b2 && b3) {
             return R.data(formElementDTO, "新增表单、元素、初始化实体表成功");