Przeglądaj źródła

初始化私有树,修改wbs树导入BUG

liuyc 3 lat temu
rodzic
commit
01ef9085c0
24 zmienionych plików z 618 dodań i 432 usunięć
  1. 12 11
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/WbsTreeContractDTO.java
  2. 0 54
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ProjectAssignmentWbstree.java
  3. 5 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTree.java
  4. 137 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTreeContract.java
  5. 40 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractVO.java
  6. 42 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractVO2.java
  7. 5 0
      blade-service/blade-manager/pom.xml
  8. 16 20
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ProjectInfoController.java
  9. 13 77
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java
  10. 0 9
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ProjectAssignmentWbstreeMapper.java
  11. 0 21
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ProjectAssignmentWbstreeMapper.xml
  12. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsInfoMapper.java
  13. 4 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsInfoMapper.xml
  14. 14 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java
  15. 51 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml
  16. 3 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.java
  17. 18 28
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml
  18. 0 14
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IProjectAssignmentWbstreeService.java
  19. 11 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java
  20. 65 66
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeService.java
  21. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java
  22. 0 69
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ProjectAssignmentWbstreeServiceImpl.java
  23. 17 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  24. 162 60
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

+ 12 - 11
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/ProjectAssignmentWbstreeDTO.java → blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/WbsTreeContractDTO.java

@@ -1,11 +1,12 @@
 package org.springblade.manager.dto;
 
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.springblade.manager.entity.ProjectAssignmentWbstree;
+import org.springblade.manager.entity.WbsTreeContract;
 
 
 /**
@@ -17,9 +18,18 @@ import org.springblade.manager.entity.ProjectAssignmentWbstree;
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
-public class ProjectAssignmentWbstreeDTO extends ProjectAssignmentWbstree {
+@TableName("m_wbs_tree_contract")
+public class WbsTreeContractDTO extends WbsTreeContract {
     private static final long serialVersionUID = 1L;
 
+
+    /**
+     * wbsId
+     */
+    @JsonProperty(value = "wbsId")
+    @ApiModelProperty(name = "wbsId", value = "wbsId", required = true)
+    private String wbsId;
+
     /**
      * 项目Id
      */
@@ -34,13 +44,6 @@ public class ProjectAssignmentWbstreeDTO extends ProjectAssignmentWbstree {
     @ApiModelProperty(name = "contractId", value = "合同Id", required = true)
     private String contractId;
 
-    /**
-     * wbsId
-     */
-    @JsonProperty(value = "wbsId")
-    @ApiModelProperty(name = "wbsId", value = "wbsId", required = true)
-    private String wbsId;
-
     /**
      * wbsTreeId
      */
@@ -49,6 +52,4 @@ public class ProjectAssignmentWbstreeDTO extends ProjectAssignmentWbstree {
     private String wbsTreeIds;
 
 
-
-
 }

+ 0 - 54
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ProjectAssignmentWbstree.java

@@ -1,54 +0,0 @@
-package org.springblade.manager.entity;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
-import org.springblade.core.mp.base.BaseEntity;
-
-
-
-
-/**
- * 项目分配wbs对象实体类
- *
- * @author liuyc
- * @since 2022-05-12
- */
-@Data
-@TableName("m_project_assignment_wbstree")
-@EqualsAndHashCode(callSuper = true)
-@NoArgsConstructor
-@AllArgsConstructor
-public class ProjectAssignmentWbstree extends BaseEntity {
-    private static final long serialVersionUID = 1L;
-
-
-    /**
-     * 项目Id
-     */
-    @TableField("project_id")
-    private String projectId;
-
-    /**
-     * 合同Id
-     */
-    @TableField("contract_id")
-    private String contractId;
-
-    /**
-     * wbsId
-     */
-    @TableField("wbs_id")
-    private String wbsId;
-
-    /**
-     * wbsTreeIds
-     */
-    @TableField("wbs_tree_id")
-    private String wbsTreeId;
-
-}

+ 5 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTree.java

@@ -151,4 +151,9 @@ public class WbsTree extends BaseEntity {
 	@ApiModelProperty(value = "初始化实体表名")
 	private String initTableName;
 
+	/**
+	 * 工程根节点id
+	 */
+	@ApiModelProperty(value = "工程根节点id")
+	private Long projectNodeId;
 }

+ 137 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTreeContract.java

@@ -0,0 +1,137 @@
+package org.springblade.manager.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.springblade.core.mp.base.BaseEntity;
+
+import java.util.List;
+
+
+/**
+ * wbs合同段树关系实体类
+ *
+ * @author liuyc
+ * @since 2022-05-12
+ */
+@Data
+@TableName("m_wbs_tree_contract")
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+public class WbsTreeContract extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * wbs库id
+     */
+    @ApiModelProperty(value = "wbs库id")
+    private String wbsId;
+    /**
+     * 租户id
+     */
+    @ApiModelProperty(value = "租户id")
+    private String tenantId;
+
+    /**
+     * 父主键
+     */
+    @ApiModelProperty(value = "父主键id")
+    private Long parentId;
+
+    /**
+     * 部门类型
+     */
+    @ApiModelProperty(value = "节点类型")
+    private Integer deptCategory;
+
+    /**
+     * '1'节点 '2'表单
+     */
+    @ApiModelProperty(value = "'1'节点 '2'表单")
+    private Integer type;
+
+    /**
+     * 部门名
+     */
+    @ApiModelProperty(value = "节点名称")
+    private String deptName;
+    /**
+     * 部门全称
+     */
+    @ApiModelProperty(value = "节点全称")
+    private String fullName;
+
+    /**
+     * 表单类型
+     */
+    @ApiModelProperty(value = "表单类型")
+    private Integer tableType;
+
+    /**
+     * 排序
+     */
+    @ApiModelProperty(value = "排序")
+    private Integer sort;
+
+    /**
+     * 祖级列表
+     */
+    @ApiModelProperty(value = "祖级id列表")
+    private String ancestors;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    /**
+     * 唯一编号
+     */
+    @ApiModelProperty(value = "唯一编号")
+    private String uniqueCode;
+
+    /**
+     * 划分编号
+     */
+    @ApiModelProperty(value = "划分编号")
+    private String partitionCode;
+
+    /**
+     * 是否是实验节点 '0'否 '1'是
+     */
+    @ApiModelProperty(value = "实验节点")
+    private Integer isExpernode;
+
+    /**
+     * 是否有混泥土 '0'否 '1'是
+     */
+    @ApiModelProperty(value = "混泥土")
+    private Integer isConcrete;
+
+    /**
+     * 表单所属方
+     */
+    @ApiModelProperty(value = "表单所属方")
+    private String tableOwner;
+
+    /**
+     *内业资料类型
+     */
+    @ApiModelProperty(value = "内业资料类型")
+    private Integer majorDataType;
+
+    /**
+     * 初始化实体表名
+     */
+    @ApiModelProperty(value = "初始化实体表名")
+    private String initTableName;
+
+}

+ 40 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractVO.java

@@ -0,0 +1,40 @@
+package org.springblade.manager.vo;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springblade.manager.dto.WbsTreeContractDTO;
+import org.springblade.manager.entity.WbsInfo;
+import org.springblade.manager.entity.WbsTree;
+import org.springblade.manager.entity.WbsTreeContract;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+ * wbs合同段树关系实体类
+ *
+ * @author liuyc
+ * @since 2022-05-23
+ */
+@Data
+public class WbsTreeContractVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * wbs总树
+     */
+    private List<WbsInfo> wbsInfos;
+
+    /**
+     * wbs项目、合同私有树
+     */
+    private List<WbsTreeContractDTO> wbsTreeContracts;
+
+
+}

+ 42 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractVO2.java

@@ -0,0 +1,42 @@
+package org.springblade.manager.vo;
+
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.manager.entity.WbsTreeContract;
+
+import java.io.Serializable;
+
+/**
+ * wbs合同段树关系实体类
+ *
+ * @author liuyc
+ * @since 2022-05-23
+ */
+@Data
+public class WbsTreeContractVO2 implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    private Long id;
+    /**
+     * wbsId
+     */
+    private String wbsId;
+    /**
+     * 项目id
+     */
+    private String projectId;
+    /**
+     * 项目名称
+     */
+    private String projectName;
+    /**
+     * 合同id
+     */
+    private String contractId;
+
+
+}

+ 5 - 0
blade-service/blade-manager/pom.xml

@@ -37,6 +37,11 @@
             <artifactId>blade-user-api</artifactId>
             <version>${bladex.project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-business</artifactId>
+            <version>${bladex.project.version}</version>
+        </dependency>
 
         <dependency>
             <groupId>junit</groupId>

+ 16 - 20
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ProjectInfoController.java

@@ -23,20 +23,17 @@ import lombok.AllArgsConstructor;
 
 import javax.validation.Valid;
 
-import org.apache.commons.lang.StringUtils;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.manager.dto.ProjectAssignmentWbstreeDTO;
+import org.springblade.manager.dto.WbsTreeContractDTO;
 import org.springblade.manager.dto.ProjectInfoDTO;
-import org.springblade.manager.entity.ProjectAssignmentWbstree;
 import org.springblade.manager.entity.WbsTree;
-import org.springblade.manager.service.IProjectAssignmentWbstreeService;
+import org.springblade.manager.service.IWbsTreeContractService;
 import org.springblade.manager.service.IWbsTreeService;
 import org.springblade.manager.vo.ContractlnfoCountVO;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
+import org.springblade.manager.vo.WbsTreeContractVO;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springblade.manager.entity.ProjectInfo;
@@ -60,7 +57,7 @@ import java.util.List;
 public class ProjectInfoController extends BladeController {
 
     private final IProjectInfoService projectInfoService;
-    private final IProjectAssignmentWbstreeService projectAssignmentWbstreeService;
+    private final IWbsTreeContractService projectAssignmentWbstreeService;
     private final IWbsTreeService wbsTreeService;
 
     /**
@@ -165,12 +162,12 @@ public class ProjectInfoController extends BladeController {
     }
 
     /**
-     * 项目合同分配wbs树保存
+     * 保存项目合同分配wbs树
      */
     @PostMapping("/saveWbsTreeInProject")
     @ApiOperationSupport(order = 9)
-    @ApiOperation(value = "保存项目合同分配wbs树", notes = "ProjectAssignmentWbsTreeDTO")
-    public R saveWbsTreeInProject(@RequestBody ProjectAssignmentWbstreeDTO pawDTO) {
+    @ApiOperation(value = "保存项目合同分配wbs树", notes = "WbsTreeContractDTO")
+    public R saveWbsTreeInProject(@RequestBody WbsTreeContractDTO pawDTO) {
         Boolean b = wbsTreeService.saveWbsTreeInProject(pawDTO);
         if (b) {
             return R.data(pawDTO, "操作成功");
@@ -180,18 +177,17 @@ public class ProjectInfoController extends BladeController {
     }
 
     /**
-     * 项目合同分配wbs树修改
+     * 项目合同分配wbs树列表
      */
-    @PostMapping("/updateWbsTreeInProject")
-    @ApiOperationSupport(order = 10)
-    @ApiOperation(value = "修改项目合同分配wbs树", notes = "ProjectAssignmentWbsTreeDTO")
-    @ApiImplicitParam(name = "id", value = "主键id", required = true)
-    public R updateWbsTreeInProject(@RequestBody ProjectAssignmentWbstreeDTO projectAssignmentWbstreeDTO) {
-        Boolean b = projectAssignmentWbstreeService.updateWbsTreeInProject(projectAssignmentWbstreeDTO);
-        if (b) {
-            return R.success("操作成功");
+    @GetMapping("/findWbsTreeList")
+    @ApiOperationSupport(order = 9)
+    @ApiOperation(value = "项目合同分配wbs树列表", notes = "WbsTreeContractDTO")
+    public R<WbsTreeContractVO> findWbsTreeList() {
+        WbsTreeContractVO list = wbsTreeService.findWbsTreeList();
+        if (list != null) {
+            return R.data(list, "查询成功");
         }
-        return R.fail("操作失败");
+        return R.fail("查询失败");
     }
 
 

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

@@ -17,6 +17,7 @@
 package org.springblade.manager.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
@@ -217,48 +218,8 @@ public class WbsTreeController extends BladeController {
     @PostMapping("/saveFormAndElement")
     @ApiOperationSupport(order = 8)
     @ApiOperation(value = "表单与元素新增", notes = "传入FormElementDTO")
-    @Transactional(rollbackFor = Exception.class)
     public R saveFormElement(@RequestBody FormElementDTO formElementDTO) {
-        if (formElementDTO.getElementList().size() <= 0) {
-            return R.fail("操作失败,请先添加表单元素");
-        }
-        String filedName = "";
-        String filedType = "";
-        String filedLength = "";
-        for (WbsFormElement wbsFormElement : formElementDTO.getElementList()) {
-            filedName = wbsFormElement.getEName();
-            filedType = String.valueOf(wbsFormElement.getEType());
-            filedLength = String.valueOf(wbsFormElement.getELength());
-        }
-        if (StringUtils.isEmpty(filedName) || StringUtils.isEmpty(filedType) || StringUtils.isEmpty(filedLength)) {
-            return R.fail("操作失败,请完整填写元素参数");
-        }
-        //初始化表名
-        String newTableName = "m_wbs_form_" + DateUtil.time() + "_" + formElementDTO.getDeptName();
-        formElementDTO.setInitTableName(newTableName);
-        //创建表单
-        boolean b1 = wbsTreeService.submit2(formElementDTO);
-        //查询当前新建表单的id //todo 通过表单名字查询 表单名必须唯一
-        String tableId = wbsTreeService.selectTableIdByTableName(formElementDTO.getDeptName());
-        if (("-1").equals(tableId)) {
-            return R.fail("表单名已经存在,请重新填写表单名");
-        }
-        //赋值fid
-        List<WbsFormElement> elementList = formElementDTO.getElementList();
-        for (WbsFormElement wbsFormElement : elementList) {
-            wbsFormElement.setFId(tableId);
-        }
-        //批量新增元素
-        boolean b2 = wbsFormElementService.saveBatch(elementList);
-        //通过fId查找当前表下的所有元素
-        List<WbsFormElement> list = wbsFormElementService.selectElementListByFid(tableId);
-        //初始化实体表单
-        Boolean b3 = wbsFormElementService.initTable(list, newTableName);
-        if (b1 && b2 && b3) {
-            return R.data(formElementDTO, "新增表单,元素,初始化实体表成功");
-        } else {
-            throw new RuntimeException("操作失败");
-        }
+        return wbsTreeService.saveFormElement(formElementDTO);
     }
 
     /**
@@ -297,43 +258,18 @@ public class WbsTreeController extends BladeController {
     @RequestMapping(value = "/import-wbsTree", method = RequestMethod.POST)
     public R importWbsTree(@RequestPart("excelFile") MultipartFile excelFile,
                            @RequestPart("wbsTreeFu") WbsTree wbsTreeFu) throws IOException {
-        //获取文件路径
-        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());
-                    //新增节点返回未创建成功查询出来的wbsTree对象、创建成功后的wbsTreeZi对象
-                    WbsTree wbsTree = wbsTreeService.importTree(wbsTreeZi);
-                    //后置初始化默认值
-                    if (wbsTree == null) {
-                        Long id = wbsTreeZi.getId();
-                        //设置ancestors祖级id集合
-                        StringBuilder stringBuffer = new StringBuilder();
-                        StringBuilder appendStr = stringBuffer.append(",").append(wbsTreeZi.getParentId());
-                        String ancestors = wbsTreeFu.getAncestors() + appendStr;
-                        //修改ancestors的值
-                        wbsTreeService.updateDate(ancestors, id);
-                        wbsTreeFu.setParentId(id);
-                        wbsTreeFu.setAncestors(ancestors);
-                    } else {
-                        wbsTreeFu.setParentId(wbsTree.getId());
-                        wbsTreeFu.setAncestors(wbsTree.getAncestors());
-                    }
-                }
-            });
+        /*查询创建的二级工程节点是否已导入相同excel模板,判断是否是导入节点ProjectNodeId字段是否相同,如果是返回false*/
+        Long parentId = wbsTreeFu.getParentId();
+        WbsTree wbsTree1 = wbsTreeService.getById(parentId);
+        if (wbsTree1.getProjectNodeId().equals(parentId)) {
+            return R.fail("该节点下已存工程节点数据,请重新选择节点导入!");
+        }
+        //导入
+        Boolean b = wbsTreeService.importWbsTree(excelFile, wbsTreeFu, wbsTree1);
+        if (b) {
+            return R.success("导入成功");
         }
-        return R.success("导入成功");
+        return R.fail("导入失败");
     }
 
 

+ 0 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ProjectAssignmentWbstreeMapper.java

@@ -1,9 +0,0 @@
-package org.springblade.manager.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.manager.entity.ProjectAssignmentWbstree;
-
-
-public interface ProjectAssignmentWbstreeMapper extends BaseMapper<ProjectAssignmentWbstree> {
-
-}

+ 0 - 21
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ProjectAssignmentWbstreeMapper.xml

@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.springblade.manager.mapper.ProjectAssignmentWbstreeMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="ResultMap" type="org.springblade.manager.entity.ProjectAssignmentWbstree">
-        <result column="id" property="id"/>
-        <result column="project_id" property="projectId"/>
-        <result column="contract_id" property="contractId"/>
-        <result column="wbs_id" property="wbsId"/>
-        <result column="wbs_tree_id" property="wbsTreeId"/>
-        <result column="create_time" property="createTime"/>
-        <result column="create_user" property="createUser"/>
-        <result column="create_dept" property="createDept"/>
-        <result column="update_user" property="updateUser"/>
-        <result column="update_time" property="updateTime"/>
-        <result column="status" property="status"/>
-        <result column="is_deleted" property="isDeleted"/>
-    </resultMap>
-
-</mapper>

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

@@ -16,6 +16,7 @@
  */
 package org.springblade.manager.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.manager.entity.WbsInfo;
@@ -40,4 +41,5 @@ public interface WbsInfoMapper extends BaseMapper<WbsInfo> {
 	 */
 	List<WbsInfoVO> selectWbsInfoPage(IPage page, WbsInfoVO wbsInfo);
 
+    List<WbsInfo> selectAll();
 }

+ 4 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsInfoMapper.xml

@@ -18,7 +18,10 @@
 
 
     <select id="selectWbsInfoPage" resultMap="wbsInfoResultMap">
-        select * from m_wbs_info where is_deleted = 0
+        select * from m_wbs_info where is_deleted = 0 and status = 1
+    </select>
+    <select id="selectAll" resultType="org.springblade.manager.entity.WbsInfo">
+        select id,wbs_name from m_wbs_info where is_deleted = 0 and status = 1
     </select>
 
 </mapper>

+ 14 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java

@@ -0,0 +1,14 @@
+package org.springblade.manager.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.manager.dto.WbsTreeContractDTO;
+import org.springblade.manager.entity.WbsTreeContract;
+
+import java.util.List;
+
+
+public interface WbsTreeContractMapper extends BaseMapper<WbsTreeContract> {
+
+    List<WbsTreeContractDTO> selectAll();
+
+}

+ 51 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.manager.mapper.WbsTreeContractMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="ResultMap" type="org.springblade.manager.dto.WbsTreeContractDTO">
+        <result column="id" property="id"/>
+        <result column="wbs_id" property="wbsId"/>
+        <result column="project_id" property="projectId"/>
+        <result column="contract_id" property="contractId"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="status" property="status"/>
+        <result column="create_time" property="createTime"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="type" property="type"/>
+        <result column="table_type" property="tableType"/>
+        <result column="tenant_id" property="tenantId"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="ancestors" property="ancestors"/>
+        <result column="dept_category" property="deptCategory"/>
+        <result column="dept_name" property="deptName"/>
+        <result column="full_name" property="fullName"/>
+        <result column="sort" property="sort"/>
+        <result column="remark" property="remark"/>
+        <result column="unique_code" property="uniqueCode"/>
+        <result column="partition_code" property="partitionCode"/>
+        <result column="is_concrete" property="isConcrete"/>
+        <result column="is_expernode" property="isExpernode"/>
+        <result column="table_owner" property="tableOwner"/>
+        <result column="major_data_type" property="majorDataType"/>
+    </resultMap>
+
+    <resultMap id="WbsTreeContractVO2" type="org.springblade.manager.vo.WbsTreeContractVO2">
+        <result column="id" property="id"/>
+        <result column="wbs_id" property="wbsId"/>
+        <result column="project_id" property="projectId"/>
+        <result column="project_name" property="projectName" />
+        <result column="contract_id" property="contractId"/>
+    </resultMap>
+    <select id="selectAll" resultMap="WbsTreeContractVO2">
+        select
+        wtc.id,wtc.wbs_id,wtc.project_id,
+        (select project_name from m_project_info pi where wtc.project_id = pi.id) as project_name,
+        contract_id from m_wbs_tree_contract wtc where is_deleted = 0 and status = 1 GROUP BY project_id;
+    </select>
+
+
+</mapper>

+ 3 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.java

@@ -102,5 +102,7 @@ public interface WbsTreeMapper extends BaseMapper<WbsTree> {
 
     void createWbsTreeTable(@Param("tableName") String tableName);
 
-    Integer insertToNewWbsTreeTable(@Param("projectId") String projectId, @Param("wbsTree") WbsTree wbsTree);
+    Integer insertWbsTreePrivate(@Param("projectId") String projectId, @Param("wbsTree") WbsTree wbsTree);
+
+    Boolean insertWbsTreeContract(@Param("projectId")String projectId,@Param("contractId") String contractId,@Param("wbsTree")  WbsTree wbsTree);
 }

+ 18 - 28
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml

@@ -68,39 +68,29 @@
         insert into m_wbs_tree
     </insert>
 
-    <insert id="insertToNewWbsTreeTable">
+    <insert id="insertWbsTreePrivate">
         INSERT INTO m_wbs_tree_private(
         id,wbs_id,project_id,tenant_id,parent_id,ancestors,dept_category,dept_name,full_name,sort,remark,`type`,
         table_type,create_time,create_user,create_dept,update_user,update_time,`STATUS`,is_deleted,
         unique_code,partition_code,is_expernode,is_concrete,table_owner,major_data_type,init_table_name)
         VALUES(
-        #{wbsTree.id},
-        #{wbsTree.wbsId},
-        #{projectId},
-        #{wbsTree.tenantId},
-        #{wbsTree.parentId},
-        #{wbsTree.ancestors},
-        #{wbsTree.deptCategory},
-        #{wbsTree.deptName},
-        #{wbsTree.fullName},
-        #{wbsTree.sort},
-        #{wbsTree.remark},
-        #{wbsTree.type},
-        #{wbsTree.tableType},
-        #{wbsTree.createTime},
-        #{wbsTree.createUser},
-        #{wbsTree.createDept},
-        #{wbsTree.updateUser},
-        #{wbsTree.updateTime},
-        #{wbsTree.status},
-        #{wbsTree.isDeleted},
-        #{wbsTree.uniqueCode},
-        #{wbsTree.partitionCode},
-        #{wbsTree.isExpernode},
-        #{wbsTree.isConcrete},
-        #{wbsTree.tableOwner},
-        #{wbsTree.majorDataType},
-        #{wbsTree.initTableName})
+        #{wbsTree.id},#{wbsTree.wbsId},#{projectId},#{wbsTree.tenantId},#{wbsTree.parentId},#{wbsTree.ancestors},
+        #{wbsTree.deptCategory},#{wbsTree.deptName},#{wbsTree.fullName},#{wbsTree.sort},#{wbsTree.remark},#{wbsTree.type},
+        #{wbsTree.tableType},#{wbsTree.createTime},#{wbsTree.createUser},#{wbsTree.createDept},#{wbsTree.updateUser},#{wbsTree.updateTime},
+        #{wbsTree.status},#{wbsTree.isDeleted},#{wbsTree.uniqueCode},#{wbsTree.partitionCode},#{wbsTree.isExpernode},#{wbsTree.isConcrete},
+        #{wbsTree.tableOwner},#{wbsTree.majorDataType},#{wbsTree.initTableName})
+    </insert>
+    <insert id="insertWbsTreeContract">
+        INSERT INTO m_wbs_tree_contract(
+        id,wbs_id,project_id,contract_id,tenant_id,parent_id,ancestors,dept_category,dept_name,full_name,sort,remark,`type`,
+        table_type,create_time,create_user,create_dept,update_user,update_time,`STATUS`,is_deleted,
+        unique_code,partition_code,is_expernode,is_concrete,table_owner,major_data_type,init_table_name)
+        VALUES(
+        #{wbsTree.id},#{wbsTree.wbsId},#{projectId},#{contractId},#{wbsTree.tenantId},#{wbsTree.parentId},#{wbsTree.ancestors},
+        #{wbsTree.deptCategory},#{wbsTree.deptName},#{wbsTree.fullName},#{wbsTree.sort},#{wbsTree.remark},#{wbsTree.type},
+        #{wbsTree.tableType},#{wbsTree.createTime},#{wbsTree.createUser},#{wbsTree.createDept},#{wbsTree.updateUser},#{wbsTree.updateTime},
+        #{wbsTree.status},#{wbsTree.isDeleted},#{wbsTree.uniqueCode},#{wbsTree.partitionCode},#{wbsTree.isExpernode},#{wbsTree.isConcrete},
+        #{wbsTree.tableOwner},#{wbsTree.majorDataType},#{wbsTree.initTableName})
     </insert>
 
 

+ 0 - 14
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IProjectAssignmentWbstreeService.java

@@ -1,14 +0,0 @@
-package org.springblade.manager.service;
-
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.manager.entity.ProjectAssignmentWbstree;
-
-
-public interface IProjectAssignmentWbstreeService extends BaseService<ProjectAssignmentWbstree> {
-
-
-    Boolean saveWbsTreeInProject(ProjectAssignmentWbstree s);
-
-    Boolean updateWbsTreeInProject(ProjectAssignmentWbstree s);
-
-}

+ 11 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java

@@ -0,0 +1,11 @@
+package org.springblade.manager.service;
+
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.manager.dto.WbsTreeContractDTO;
+import org.springblade.manager.entity.WbsTree;
+import org.springblade.manager.entity.WbsTreeContract;
+
+
+public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
+
+}

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

@@ -18,86 +18,85 @@ 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.FormElementDTO;
-import org.springblade.manager.dto.ProjectAssignmentWbstreeDTO;
+import org.springblade.manager.dto.WbsTreeContractDTO;
 import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.excel.WbsTreeExcel;
 import org.springblade.manager.vo.WbsNodeTableVO;
+import org.springblade.manager.vo.WbsTreeContractVO;
 import org.springblade.manager.vo.WbsTreeVO;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.util.List;
 
 /**
- *  服务类
+ * 服务类
  *
  * @author liuyc
  * @since 2022-04-25
  */
 public interface IWbsTreeService extends BaseService<WbsTree> {
 
-	/**
-	 * 自定义分页
-	 *
-	 * @param page
-	 * @param wbsTree
-	 * @return
-	 */
-	IPage<WbsTreeVO> selectWbsTreePage(IPage<WbsTreeVO> page, WbsTreeVO wbsTree);
-
-	/**
-	 * 懒加载树形结构
-	 *
-	 * @param tenantId
-	 * @param parentId
-	 * @return
-	 */
-	List<WbsTreeVO> lazyTree(String wbsId, String tenantId, Long parentId);
-
-	/**
-	 * 树形结构
-	 *
-	 * @param tenantId
-	 * @return
-	 */
-	List<WbsTreeVO> tree(String wbsId,String tenantId,String type);
-
-
-	/**
-	 * 提交
-	 *
-	 * @param dept
-	 * @return
-	 */
-	boolean submit(WbsTree dept);
-
-	boolean submit2(FormElementDTO dept);
-
-	/**
-	 *表单查询(根据节点ID查询当前表单)
-	 */
-	List<WbsNodeTableVO> selectByNodeTable(String id);
-
-	/**
-	 * 删除表单
-	 */
-	boolean removeTableById(String id);
-
-	/**
-	 * 表单元素列表
-	 */
-	List<WbsFormElement> selectFormElements(String id);
-
-
-    Boolean saveFormElement(WbsTree wbsTree);
-
-	String selectTableIdByTableName(String deptName);
-
-    void importRegion(List<WbsTreeExcel> data, Boolean isCovered);
-
-	WbsTree importTree(WbsTree wbsTreeZi);
-
-	boolean updateDate(String ancestors, Long id);
-
-	Boolean saveWbsTreeInProject(ProjectAssignmentWbstreeDTO pawDTO);
+    /**
+     * 自定义分页
+     *
+     * @param page
+     * @param wbsTree
+     * @return
+     */
+    IPage<WbsTreeVO> selectWbsTreePage(IPage<WbsTreeVO> page, WbsTreeVO wbsTree);
+
+    /**
+     * 懒加载树形结构
+     *
+     * @param tenantId
+     * @param parentId
+     * @return
+     */
+    List<WbsTreeVO> lazyTree(String wbsId, String tenantId, Long parentId);
+
+    /**
+     * 树形结构
+     *
+     * @param tenantId
+     * @return
+     */
+    List<WbsTreeVO> tree(String wbsId, String tenantId, String type);
+
+
+    /**
+     * 提交
+     *
+     * @param dept
+     * @return
+     */
+    boolean submit(WbsTree dept);
+
+
+    /**
+     * 表单查询(根据节点ID查询当前表单)
+     */
+    List<WbsNodeTableVO> selectByNodeTable(String id);
+
+    /**
+     * 删除表单
+     */
+    boolean removeTableById(String id);
+
+    /**
+     * 表单元素列表
+     */
+    List<WbsFormElement> selectFormElements(String id);
+
+    Boolean importWbsTree(MultipartFile excelFile, WbsTree wbsTreeFu, WbsTree wbsTree1) throws IOException;
+
+    Boolean saveWbsTreeInProject(WbsTreeContractDTO pawDTO);
+
+    WbsTreeContractVO findWbsTreeList();
+
+    R saveFormElement(FormElementDTO formElementDTO);
 }

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

@@ -46,7 +46,7 @@ public class ArchiveTreeServiceImpl
 
     @Override
     public boolean submit(ArchiveTreeDTO archiveTreeDTO) {
-        //todo 条件判断有误,当parentid=0时,Ancestors会为null
+        //TODO 条件判断有误,当parentid=0时,Ancestors会为null
         if (Func.isEmpty(archiveTreeDTO.getParentId())) {
             archiveTreeDTO.setTenantId(AuthUtil.getTenantId());
             archiveTreeDTO.setParentId(BladeConstant.TOP_PARENT_ID);

+ 0 - 69
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ProjectAssignmentWbstreeServiceImpl.java

@@ -1,69 +0,0 @@
-package org.springblade.manager.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.manager.entity.ProjectAssignmentWbstree;
-import org.springblade.manager.mapper.ProjectAssignmentWbstreeMapper;
-import org.springblade.manager.service.IProjectAssignmentWbstreeService;
-import org.springframework.stereotype.Service;
-
-@Service
-public class ProjectAssignmentWbstreeServiceImpl
-        extends BaseServiceImpl<ProjectAssignmentWbstreeMapper, ProjectAssignmentWbstree>
-        implements IProjectAssignmentWbstreeService {
-
-    @Override
-    public Boolean saveWbsTreeInProject(ProjectAssignmentWbstree s) {
-        /*List<String> wbsTreeIds = s.getWbsTreeIds();
-        StringBuilder ids = new StringBuilder();
-        for (String wbsTreeId : wbsTreeIds) {
-            String id = wbsTreeId;
-            ids.append(id).append(',');
-        }
-        ids.deleteCharAt(ids.length() - 1);
-        ProjectAssignmentWbstree p = new ProjectAssignmentWbstree();
-        p.setProjectId(s.getProjectId());
-        p.setContractId(s.getContractId());
-        p.setWbsId(s.getWbsId());
-        p.setWbsTreeId(String.valueOf(ids));*/
-
-        //判重
-        QueryWrapper<ProjectAssignmentWbstree> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("project_id",s.getProjectId())
-                .eq("contract_id",s.getContractId())
-                .eq("wbs_id",s.getWbsId())
-                .eq("wbs_tree_id",s.getWbsTreeId());
-        Long aLong = baseMapper.selectCount(queryWrapper);
-        if (aLong > 0){
-            return false;
-        }
-        //新增
-        int row = baseMapper.insert(s);
-        if (row > 0) {
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public Boolean updateWbsTreeInProject(ProjectAssignmentWbstree s) {
-        /*List<String> wbsTreeIds = s.getWbsTreeIds();
-        StringBuilder ids = new StringBuilder();
-        for (String wbsTreeId : wbsTreeIds) {
-            String id = wbsTreeId;
-            ids.append(id).append(',');
-        }
-        ids.deleteCharAt(ids.length() - 1);
-        ProjectAssignmentWbstree p = new ProjectAssignmentWbstree();
-        p.setProjectId(s.getProjectId());
-        p.setContractId(s.getContractId());
-        p.setWbsId(s.getWbsId());
-        p.setWbsTreeId(String.valueOf(ids));*/
-
-        int row = baseMapper.updateById(s);
-        if (row > 0) {
-            return true;
-        }
-        return false;
-    }
-}

+ 17 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -0,0 +1,17 @@
+package org.springblade.manager.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.manager.dto.WbsTreeContractDTO;
+import org.springblade.manager.entity.WbsTree;
+import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.mapper.WbsTreeContractMapper;
+import org.springblade.manager.service.IWbsTreeContractService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class WbsTreeContractServiceImpl
+        extends BaseServiceImpl<WbsTreeContractMapper, WbsTreeContract>
+        implements IWbsTreeContractService {
+
+}

+ 162 - 60
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -17,9 +17,13 @@
 package org.springblade.manager.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
-import org.checkerframework.checker.units.qual.A;
+import org.springblade.business.entity.ConstructionLedger;
+import org.springblade.business.mapper.ConstructionLedgerMapper;
+import org.springblade.business.service.IConstructionLedgerService;
 import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.log.logger.BladeLogger;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
@@ -29,21 +33,29 @@ import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringPool;
 import org.springblade.manager.dto.FormElementDTO;
-import org.springblade.manager.dto.ProjectAssignmentWbstreeDTO;
-import org.springblade.manager.dto.WbsTreeDTO;
+import org.springblade.manager.dto.WbsTreeContractDTO;
+import org.springblade.manager.entity.WbsInfo;
+import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.excel.WbsExcelUtil;
 import org.springblade.manager.excel.WbsTreeExcel;
+import org.springblade.manager.mapper.WbsInfoMapper;
+import org.springblade.manager.mapper.WbsTreeContractMapper;
 import org.springblade.manager.mapper.WbsTreeMapper;
+import org.springblade.manager.service.IWbsFormElementService;
 import org.springblade.manager.service.IWbsTreeService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.vo.WbsNodeTableVO;
+import org.springblade.manager.vo.WbsTreeContractVO;
 import org.springblade.manager.vo.WbsTreeVO;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
 
-import javax.annotation.Resource;
+import java.io.File;
+import java.io.IOException;
 import java.util.*;
 
 /**
@@ -53,10 +65,15 @@ import java.util.*;
  * @since 2022-04-25
  */
 @Service
+@AllArgsConstructor
 public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree> implements IWbsTreeService {
 
-    @Resource
-    private WbsTreeMapper wbsTreeMapper;
+    private final BladeLogger logger;
+    private final WbsTreeMapper wbsTreeMapper;
+    private final ConstructionLedgerMapper constructionLedgerMapper;
+    private final WbsInfoMapper wbsInfoMapper;
+    private final WbsTreeContractMapper wbsTreeContractMapper;
+    private final IWbsFormElementService wbsFormElementService;
 
     @Override
     public IPage<WbsTreeVO> selectWbsTreePage(IPage<WbsTreeVO> page, WbsTreeVO wbsTree) {
@@ -96,8 +113,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         return saveOrUpdate(dept);
     }
 
-    @Override
-    public boolean submit2(FormElementDTO dept) {
+    private boolean submit2(FormElementDTO dept) {
         if (Func.isEmpty(dept.getParentId())) {
             dept.setTenantId(AuthUtil.getTenantId());
             dept.setParentId(BladeConstant.TOP_PARENT_ID);
@@ -124,16 +140,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     public List<WbsNodeTableVO> selectByNodeTable(String id) {
         //查询节点下的所有表单
         List<WbsNodeTableVO> wbsNodeTableVOS = wbsTreeMapper.selectByNodeTable(id);
-		/*List<String> ids = new ArrayList<>();
-		for (int i = 0; i < wbsNodeTableVOS.size(); i++) {
-			String id1 = wbsNodeTableVOS.get(i).getId();
-			ids.add(id1+",");
-			if ( i == (wbsNodeTableVOS.size()-1)){
-				ids.remove(",");
-			}
-		}
-		//根据ID查询元素
-		List<String> strings = wbsTreeMapper.selectByElementsTotal(ids);*/
         return wbsNodeTableVOS;
     }
 
@@ -152,17 +158,8 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         return wbsFormElements;
     }
 
-    @Override
-    public Boolean saveFormElement(WbsTree wbsTree) {
-        Integer integer = wbsTreeMapper.insertForm(wbsTree);
-        if (integer > 0) {
-            return true;
-        }
-        return false;
-    }
 
-    @Override
-    public String selectTableIdByTableName(String deptName) {
+    private String selectTableIdByTableName(String deptName) {
         QueryWrapper<WbsTree> queryWrapper = new QueryWrapper<>();
         queryWrapper.in("dept_name", deptName);
         WbsTree wbsTree = wbsTreeMapper.selectOne(queryWrapper);
@@ -172,30 +169,67 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         return String.valueOf(wbsTree.getId());
     }
 
+
     @Override
-    public void importRegion(List<WbsTreeExcel> data, Boolean isCovered) {
-        List<WbsTree> list = new ArrayList<>();
-        data.forEach(wbsTreeExcel -> {
-            WbsTree wbsTree = BeanUtil.copy(wbsTreeExcel, WbsTree.class);
-            list.add(wbsTree);
-        });
-        if (isCovered) {
-            this.saveOrUpdateBatch(list);
-        } else {
-            this.saveBatch(list);
+    public Boolean 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());
+                    }
+                }
+            });
         }
-
+        //修改根节点ProjectNodeId
+        int row = baseMapper.updateById(wbsTree1);
+        if (row > 0) {
+            return true;
+        }
+        return false;
     }
 
-    @Override
-    public WbsTree importTree(WbsTree wbsTreeZi) {
+    private WbsTree importTree(WbsTree wbsTreeZi) {
         //查重
         QueryWrapper<WbsTree> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("wbs_id", wbsTreeZi.getWbsId());
         queryWrapper.eq("dept_name", wbsTreeZi.getDeptName());
         queryWrapper.eq("dept_category", wbsTreeZi.getDeptCategory());
-        WbsTree wbsTree = baseMapper.selectOne(queryWrapper);
-        if (wbsTree == null) {
+        queryWrapper.eq("project_node_id", wbsTreeZi.getProjectNodeId());
+        WbsTree wbsTrees = baseMapper.selectOne(queryWrapper);
+        if (wbsTrees == null) {
             //初始化默认值
             wbsTreeZi.setStatus(1);
             wbsTreeZi.setType(1);
@@ -204,17 +238,13 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 wbsTreeZi.setIsConcrete(0);
                 wbsTreeZi.setIsExpernode(0);
             }
-            int row = baseMapper.insert(wbsTreeZi);
-            if (row > 0) {
-                return null;
-            }
+            baseMapper.insert(wbsTreeZi);
         }
-        return wbsTree;
+        //TODO 暂时未想到好的处理方法来判断重复条新增问题
+        return wbsTrees;
     }
 
-
-    @Override
-    public boolean updateDate(String ancestors, Long id) {
+    private boolean updateDate(String ancestors, Long id) {
         Integer row = baseMapper.updateById2(ancestors, id);
         if (row > 0) {
             return true;
@@ -224,7 +254,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean saveWbsTreeInProject(ProjectAssignmentWbstreeDTO pawDTO) {
+    public Boolean saveWbsTreeInProject(WbsTreeContractDTO pawDTO) {
         String wbsTreeIds = pawDTO.getWbsTreeIds();
         if (StringUtils.isEmpty(wbsTreeIds)) {
             return false;
@@ -235,18 +265,30 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             list.forEach(System.out::print);
             //新增节点
             for (WbsTree wbsTree : list) {
-                Integer row = baseMapper.insertToNewWbsTreeTable(pawDTO.getProjectId(), wbsTree);
+                //初始化wbs私有库
+                Integer row = baseMapper.insertWbsTreePrivate(pawDTO.getProjectId(), wbsTree);
                 if (row > 0) {
-                    System.out.println("新增节点成功,节点id: ----- " + wbsTree.getId());
+                    logger.info(wbsTree.getId().toString(), "初始化项目私有wbs树成功");
+                }
+                //初始化创建合同段私有wbs树
+                Boolean b1 = baseMapper.insertWbsTreeContract(pawDTO.getProjectId(), pawDTO.getContractId(), wbsTree);
+                if (b1) {
+                    logger.info(wbsTree.getId().toString(), "初始化合同段wbs树成功");
                 }
+                //初始化施工台账数据
+                if (wbsTree.getDeptCategory() == 6) {
+                    ConstructionLedger constructionLedger = new ConstructionLedger();
+                    constructionLedger.setIsBeton(0);
+                    constructionLedger.setWbsId(Long.parseLong(pawDTO.getWbsId()));
+                    constructionLedger.setContractId(Long.parseLong(pawDTO.getContractId()));
+                    int b2 = constructionLedgerMapper.insert(constructionLedger);
+                    if (b2 > 0) {
+                        logger.info(constructionLedger.getId().toString(), "施工台账初始化成功");
+                    }
+                }
+                //TODO 初始化元素表、公式
             }
         }
-        //初始化创建合同段私有wbs树
-
-
-        //初始化施工台账数据
-
-
         return true;
     }
 
@@ -258,4 +300,64 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         }
         return baseMapper.selectBatchIds(idList);
     }
+
+    @Override
+    public WbsTreeContractVO findWbsTreeList() {
+        WbsTreeContractVO wbsTreeContractVO = new WbsTreeContractVO();
+        //查询Wbs总树
+        List<WbsInfo> wbsInfos = wbsInfoMapper.selectAll();
+        wbsTreeContractVO.setWbsInfos(wbsInfos);
+        //查询私有树
+        List<WbsTreeContractDTO> wbsTreeContracts = wbsTreeContractMapper.selectAll();
+        wbsTreeContractVO.setWbsTreeContracts(wbsTreeContracts);
+        return wbsTreeContractVO;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R saveFormElement(FormElementDTO formElementDTO) {
+        if (formElementDTO.getElementList().size() <= 0) {
+            return R.fail("操作失败,请先添加表单元素");
+        }
+        String filedName = "";
+        String filedType = "";
+        String filedLength = "";
+        for (WbsFormElement wbsFormElement : formElementDTO.getElementList()) {
+            filedName = wbsFormElement.getEName();
+            filedType = String.valueOf(wbsFormElement.getEType());
+            filedLength = String.valueOf(wbsFormElement.getELength());
+        }
+        if (StringUtils.isEmpty(filedName) || StringUtils.isEmpty(filedType) || StringUtils.isEmpty(filedLength)) {
+            return R.fail("操作失败,请完整填写元素参数");
+        }
+        //初始化表名
+        String newTableName = "m_wbs_form_" + DateUtil.time() + "_" + formElementDTO.getDeptName();
+        formElementDTO.setInitTableName(newTableName);
+        //创建表单
+        boolean b1 = submit2(formElementDTO);
+        //查询当前新建表单的id,通过表单名字查询,表单名必须唯一
+        String tableId = selectTableIdByTableName(formElementDTO.getDeptName());
+        if (("-1").equals(tableId)) {
+            return R.fail("表单名已经存在,请重新填写表单名");
+        }
+        //赋值fid
+        List<WbsFormElement> elementList = formElementDTO.getElementList();
+        for (WbsFormElement wbsFormElement : elementList) {
+            wbsFormElement.setFId(tableId);
+        }
+        //批量新增元素
+        boolean b2 = wbsFormElementService.saveBatch(elementList);
+        //通过fId查找当前表下的所有元素
+        List<WbsFormElement> list = wbsFormElementService.selectElementListByFid(tableId);
+        //初始化实体表单
+        Boolean b3 = wbsFormElementService.initTable(list, newTableName);
+        if (b1 && b2 && b3) {
+            return R.data(formElementDTO, "新增表单,元素,初始化实体表成功");
+        } else {
+            throw new RuntimeException("操作失败");
+        }
+        //TODO 初始化元素(动态更新元素-就是当用户编辑新增元素时,实体表也要同步新增一个字段,编辑、删除一样需要同步,需要在写3个接口)
+    }
+
+
 }