Kaynağa Gözat

更新代码

liuyc 3 yıl önce
ebeveyn
işleme
70ce77f13e
41 değiştirilmiş dosya ile 1341 ekleme ve 336 silme
  1. 5 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/ProjectInfoDTO.java
  2. 39 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/WbsTreeAllListDTO.java
  3. 1 24
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/WbsTreeContractDTO.java
  4. 31 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/WbsTreePrivateDTO.java
  5. 5 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ProjectInfo.java
  6. 7 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTree.java
  7. 26 6
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTreeContract.java
  8. 142 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTreePrivate.java
  9. 17 2
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsInfoVO.java
  10. 37 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeAllListVO.java
  11. 47 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractTreeVO.java
  12. 17 17
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractVO.java
  13. 0 42
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractVO2.java
  14. 65 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreePrivateVO.java
  15. 25 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreePrivateVO2.java
  16. 40 23
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ContractInfoController.java
  17. 44 23
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ProjectInfoController.java
  18. 120 106
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsInfoController.java
  19. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java
  20. 6 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.java
  21. 35 10
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.xml
  22. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ProjectInfoMapper.xml
  23. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsInfoMapper.java
  24. 20 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsInfoMapper.xml
  25. 30 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java
  26. 93 8
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml
  27. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.java
  28. 19 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml
  29. 32 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java
  30. 97 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml
  31. 6 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IContractInfoService.java
  32. 4 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsInfoService.java
  33. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java
  34. 19 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreePrivateService.java
  35. 4 7
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeService.java
  36. 11 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java
  37. 14 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsInfoServiceImpl.java
  38. 120 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  39. 38 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java
  40. 83 44
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java
  41. 31 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/wrapper/WbsTreePrivateWrapper.java

+ 5 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/ProjectInfoDTO.java

@@ -127,4 +127,9 @@ public class ProjectInfoDTO extends ProjectInfo {
 	@ApiModelProperty(value = "是否开启电签")
 	private Integer isOpenSign;
 
+	/**
+	 * wbs私有树引用wbs模板id
+	 */
+	@ApiModelProperty(value = "wbs私有树引用wbs模板id")
+	private Long referenceWbsTemplateId;
 }

+ 39 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/WbsTreeAllListDTO.java

@@ -0,0 +1,39 @@
+package org.springblade.manager.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class WbsTreeAllListDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * wbsId
+     */
+    @JsonProperty(value = "wbsId")
+    @ApiModelProperty(name = "wbsId", value = "wbsId", required = true)
+    private String wbsId;
+
+    /**
+     * 项目Id
+     */
+    @JsonProperty(value = "projectId")
+    @ApiModelProperty(name = "projectId", value = "项目Id", required = true)
+    private String projectId;
+
+    /**
+     * 合同Id
+     */
+    @JsonProperty(value = "contractId")
+    @ApiModelProperty(name = "contractId", value = "合同Id", required = true)
+    private String contractId;
+
+    /**
+     * wbsTreeId
+     */
+    @JsonProperty(value = "wbsTreeId")
+    @ApiModelProperty(name = "wbsTreeIds", value = "字符串拼接wbsTreeIds", required = true)
+    private String wbsTreeIds;
+}

+ 1 - 24
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/WbsTreeContractDTO.java

@@ -18,36 +18,13 @@ import org.springblade.manager.entity.WbsTreeContract;
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
-@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
-     */
-    @JsonProperty(value = "projectId")
-    @ApiModelProperty(name = "projectId", value = "项目Id", required = true)
-    private String projectId;
-
-    /**
-     * 合同Id
-     */
-    @JsonProperty(value = "contractId")
-    @ApiModelProperty(name = "contractId", value = "合同Id", required = true)
-    private String contractId;
-
     /**
      * wbsTreeId
      */
-    @JsonProperty(value = "wbsTreeId")
+    @JsonProperty(value = "wbsTreeIds")
     @ApiModelProperty(name = "wbsTreeIds", value = "字符串拼接wbsTreeIds", required = true)
     private String wbsTreeIds;
 

+ 31 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/WbsTreePrivateDTO.java

@@ -0,0 +1,31 @@
+package org.springblade.manager.dto;
+
+
+
+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.WbsTreePrivate;
+
+/**
+ * 项目分配wbs传输对象实体类
+ *
+ * @author liuyc
+ * @since 2022-05-12
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class WbsTreePrivateDTO extends WbsTreePrivate {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * wbsTreeId
+     */
+    @JsonProperty(value = "wbsTreeId")
+    @ApiModelProperty(name = "wbsTreeIds", value = "字符串拼接wbsTreeIds", required = true)
+    private String wbsTreeIds;
+
+}

+ 5 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ProjectInfo.java

@@ -130,5 +130,9 @@ public class ProjectInfo extends BaseEntity {
 	@ApiModelProperty(value = "是否开启电签")
 	private Integer isOpenSign;
 
-
+	/**
+	 * wbs私有树引用wbs模板id
+	 */
+	@ApiModelProperty(value = "wbs私有树引用wbs模板id")
+	private Long referenceWbsTemplateId;
 }

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

@@ -156,4 +156,11 @@ public class WbsTree extends BaseEntity {
 	 */
 	@ApiModelProperty(value = "工程根节点id")
 	private Long projectNodeId;
+
+
+	/**
+	 *是否关联清表 '0'否 '1'是
+	 */
+	@ApiModelProperty(value = "是否关联清表 '0'否 '1'是")
+	private Integer isLinkTable;
 }

+ 26 - 6
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTreeContract.java

@@ -1,8 +1,8 @@
 package org.springblade.manager.entity;
 
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
+
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -10,7 +10,6 @@ import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 import org.springblade.core.mp.base.BaseEntity;
 
-import java.util.List;
 
 
 /**
@@ -27,12 +26,26 @@ import java.util.List;
 public class WbsTreeContract extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
-
     /**
-     * wbs库id
+     * wbsId
      */
-    @ApiModelProperty(value = "wbs库id")
+    @ApiModelProperty(name = "wbsId", value = "wbsId", required = true)
     private String wbsId;
+
+    /**
+     * 项目Id
+     */
+    @JsonProperty(value = "projectId")
+    @ApiModelProperty(name = "projectId", value = "项目Id", required = true)
+    private String projectId;
+
+    /**
+     * 合同Id
+     */
+    @JsonProperty(value = "contractId")
+    @ApiModelProperty(name = "contractId", value = "合同Id", required = true)
+    private String contractId;
+
     /**
      * 租户id
      */
@@ -134,4 +147,11 @@ public class WbsTreeContract extends BaseEntity {
     @ApiModelProperty(value = "初始化实体表名")
     private String initTableName;
 
+
+    /**
+     *是否关联清表 '0'否 '1'是
+     */
+    @ApiModelProperty(value = "是否关联清表 '0'否 '1'是")
+    private Integer isLinkTable;
+
 }

+ 142 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTreePrivate.java

@@ -0,0 +1,142 @@
+package org.springblade.manager.entity;
+
+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;
+
+
+
+/**
+ * wbs合同段树关系实体类
+ *
+ * @author liuyc
+ * @since 2022-05-12
+ */
+@Data
+@TableName("m_wbs_tree_private")
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+public class WbsTreePrivate extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 项目Id
+     */
+    @ApiModelProperty(name = "projectId", value = "项目Id", required = true)
+    private String projectId;
+    /**
+     * 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;
+
+    /**
+     *是否关联清表 '0'否 '1'是
+     */
+    @ApiModelProperty(value = "是否关联清表 '0'否 '1'是")
+    private Integer isLinkTable;
+}

+ 17 - 2
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsInfoVO.java

@@ -20,6 +20,8 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.manager.entity.WbsInfo;
 
+import java.io.Serializable;
+
 
 /**
  * wbs动态库信息视图实体类
@@ -28,8 +30,21 @@ import org.springblade.manager.entity.WbsInfo;
  * @since 2022-04-25
  */
 @Data
-@EqualsAndHashCode(callSuper = true)
-public class WbsInfoVO extends WbsInfo {
+public class WbsInfoVO implements Serializable {
 	private static final long serialVersionUID = 1L;
 
+	/**
+	 * wbsId
+	 */
+	private Long id;
+	/**
+	 * wbs名称
+	 */
+	private String wbsName;
+	/**
+	 * wbs类型
+	 */
+	private String wbsType;
+
+
 }

+ 37 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeAllListVO.java

@@ -0,0 +1,37 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+import org.springblade.manager.entity.WbsInfo;
+import org.springblade.manager.entity.WbsTreePrivate;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+ * wbs合同段树关系实体类
+ *
+ * @author liuyc
+ * @since 2022-05-23
+ */
+@Data
+public class WbsTreeAllListVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * wbs总树
+     */
+    private List<WbsInfo> wbsInfos;
+
+    /**
+     * wbs项目私有树
+     */
+    private List<WbsTreePrivate> wbsTreePrivates;
+
+    /**
+     * wbs合同段私有树
+     */
+//    private List<WbsTreeContractVO> wbsTreeContracts;
+
+
+}

+ 47 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractTreeVO.java

@@ -0,0 +1,47 @@
+package org.springblade.manager.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import org.springblade.core.tool.node.INode;
+import org.springblade.manager.entity.WbsTreeContract;
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class WbsTreeContractTreeVO extends WbsTreeContract implements INode<WbsTreeContractTreeVO> {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    /**
+     * 父节点ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long parentId;
+
+    /**
+     * 子孙节点
+     */
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private List<WbsTreeContractTreeVO> children;
+
+    /**
+     * 是否有子孙节点
+     */
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private Boolean hasChildren;
+
+    @Override
+    public List<WbsTreeContractTreeVO> getChildren() {
+        if (this.children == null) {
+            this.children = new ArrayList<>();
+        }
+        return this.children;
+    }
+}

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

@@ -1,19 +1,8 @@
 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 lombok.Data;
 import java.io.Serializable;
-import java.util.List;
 
 
 /**
@@ -27,14 +16,25 @@ public class WbsTreeContractVO implements Serializable {
     private static final long serialVersionUID = 1L;
 
     /**
-     * wbs总树
+     * 主键id
      */
-    private List<WbsInfo> wbsInfos;
-
+    private Long id;
+    /**
+     * wbsId
+     */
+    private String wbsId;
+    /**
+     * 项目id
+     */
+    private String projectId;
+    /**
+     * 项目名称
+     */
+    private String projectName;
     /**
-     * wbs项目、合同私有树
+     * 合同id
      */
-    private List<WbsTreeContractDTO> wbsTreeContracts;
+    private String contractId;
 
 
 }

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

@@ -1,42 +0,0 @@
-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;
-
-
-}

+ 65 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreePrivateVO.java

@@ -0,0 +1,65 @@
+package org.springblade.manager.vo;
+
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tool.node.INode;
+import org.springblade.manager.entity.WbsTreePrivate;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * 视图实体类
+ *
+ * @author liuyc
+ * @since 2022-05-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WbsTreePrivateVO extends WbsTreePrivate implements INode<WbsTreePrivateVO> {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    /**
+     * 父节点ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long parentId;
+
+    /**
+     * 子孙节点
+     */
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private List<WbsTreePrivateVO> children;
+
+    /**
+     * 是否有子孙节点
+     */
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private Boolean hasChildren;
+
+    @Override
+    public List<WbsTreePrivateVO> getChildren() {
+        if (this.children == null) {
+            this.children = new ArrayList<>();
+        }
+        return this.children;
+    }
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+
+}

+ 25 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreePrivateVO2.java

@@ -0,0 +1,25 @@
+package org.springblade.manager.vo;
+
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class WbsTreePrivateVO2 implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * wbsId
+     */
+    private String wbsId;
+    /**
+     * 项目id
+     */
+    private String projectId;
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+}

+ 40 - 23
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ContractInfoController.java

@@ -27,12 +27,17 @@ 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.secure.BladeUser;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.FindAllUserByConditionDTO;
 import org.springblade.manager.dto.SaveUserInfoByProjectDTO;
+import org.springblade.manager.dto.WbsTreeContractDTO;
+import org.springblade.manager.service.IWbsTreeContractService;
 import org.springblade.manager.service.SaveUserInfoByProjectService;
 import org.springblade.manager.vo.CRolePostVO;
+import org.springblade.manager.vo.WbsTreeContractTreeVO;
+import org.springblade.manager.vo.WbsTreeVO;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.util.DigestUtils;
@@ -64,6 +69,7 @@ public class ContractInfoController extends BladeController {
     private final IContractInfoService contractInfoService;
     private final SaveUserInfoByProjectService saveUserInfoByProject;
     private final IUserClient iUserClient;
+    private final IWbsTreeContractService wbsTreeContractService;
 
     /**
      * 详情
@@ -106,14 +112,6 @@ public class ContractInfoController extends BladeController {
     @ApiOperation(value = "自定义分页", notes = "传入contractInfo")
     public R<IPage<ContractInfoVO>> page(ContractInfoVO contractInfo, Query query) {
         IPage<ContractInfoVO> pages = contractInfoService.selectContractInfoPage(Condition.getPage(query), contractInfo);
-        //获取token信息
-		/*String[] tokens = AuthUtil.getHeader().split(" ");
-		if (tokens.length>=1){
-			System.out.println(tokens[1]);
-			//解析
-			Claims claims = JwtUtil.parseJWT(tokens[1]);
-			System.out.println(claims);
-		}*/
         return R.data(pages);
     }
 
@@ -239,21 +237,6 @@ public class ContractInfoController extends BladeController {
         return R.success("未查询到信息");
     }
 
-    /**
-     * 查询当前岗位下所有用户信息
-     *//*
-    @GetMapping("/findUserInfoByCondition")
-    @ApiOperationSupport(order = 10)
-    @ApiOperation(value = "查询当前角色岗位下的用户信息", notes = "传入角色id、岗位id")
-    public R<List<User>> findUserInfoByCondition(@RequestParam("rId") String rId,
-                                                 @RequestParam("pId") String pId,
-                                                 @RequestParam("userName") String userName) {
-        List<User> users = contractInfoService.findUserInfoByCondition(rId, pId, userName);
-        if (users.size() > 0) {
-            return R.data(users);
-        }
-        return R.fail("未查询到数据");
-    }*/
 
     /**
      * 项目分配用户批量保存
@@ -296,4 +279,38 @@ public class ContractInfoController extends BladeController {
     }
 
 
+    /**
+     * 分配合同段wbs节点树保存或者修改
+     */
+    @PostMapping("/submitWbsTreeInContract")
+    @ApiOperationSupport(order = 13)
+    @ApiOperation(value = "分配合同段wbs节点树保存或修改", notes = "传入ids,wbsId,项目id,合同段id")
+    public R submitWbsTreeInContract(@RequestBody WbsTreeContractDTO wbsTreeContractDTO) {
+        Boolean b = wbsTreeContractService.submitWbsTreeInContract(wbsTreeContractDTO);
+        if (b) {
+            return R.success("操作成功");
+        }
+        return R.fail("操作失败");
+    }
+
+    /**
+     * 查询合同段私有Wbs节点树形结构
+     */
+    @GetMapping("/tree")
+    @ApiOperationSupport(order = 14)
+    @ApiOperation(value = "查询合同段私有Wbs节点树形结构", notes = "传入wbsId,项目id,合同段id")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "wbsId", value = "wbsId", required = true),
+            @ApiImplicitParam(name = "项目id", value = "projectId", required = true),
+            @ApiImplicitParam(name = "合同段id", value = "contractId", required = true)
+    })
+    public R saveWbsTreeInContract(String wbsId, String projectId, String contractId) {
+        List<WbsTreeContractTreeVO> tree = contractInfoService.tree(wbsId, projectId, contractId);
+        if (tree != null && tree.size() > 0) {
+            return R.data(tree);
+        }
+        return R.fail(200, "未查询到信息");
+    }
+
+
 }

+ 44 - 23
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ProjectInfoController.java

@@ -25,19 +25,19 @@ import javax.validation.Valid;
 
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.WbsTreeContractDTO;
 import org.springblade.manager.dto.ProjectInfoDTO;
-import org.springblade.manager.entity.WbsTree;
+import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.service.IWbsTreeContractService;
+import org.springblade.manager.service.IWbsTreePrivateService;
 import org.springblade.manager.service.IWbsTreeService;
-import org.springblade.manager.vo.ContractlnfoCountVO;
-import org.springblade.manager.vo.WbsTreeContractVO;
+import org.springblade.manager.vo.*;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springblade.manager.entity.ProjectInfo;
-import org.springblade.manager.vo.ProjectInfoVO;
 import org.springblade.manager.wrapper.ProjectInfoWrapper;
 import org.springblade.manager.service.IProjectInfoService;
 import org.springblade.core.boot.ctrl.BladeController;
@@ -57,8 +57,8 @@ import java.util.List;
 public class ProjectInfoController extends BladeController {
 
     private final IProjectInfoService projectInfoService;
-    private final IWbsTreeContractService projectAssignmentWbstreeService;
     private final IWbsTreeService wbsTreeService;
+    private final IWbsTreePrivateService wbsTreePrivateService;
 
     /**
      * 详情
@@ -157,37 +157,58 @@ public class ProjectInfoController extends BladeController {
     @ApiOperationSupport(order = 8)
     @ApiOperation(value = "统计合同数", notes = "null")
     public List<ContractlnfoCountVO> selectContractInfoCount() {
-        List<ContractlnfoCountVO> contractlnfoCountsVO = projectInfoService.selectContractInfoCount();
-        return contractlnfoCountsVO;
+        return projectInfoService.selectContractInfoCount();
     }
 
     /**
-     * 保存项目合同分配wbs树
+     * 项目私有库分配wbs树下拉框列表type=1质检 =2实验
      */
-    @PostMapping("/saveWbsTreeInProject")
+    @GetMapping("/findWbsTreeList")
     @ApiOperationSupport(order = 9)
-    @ApiOperation(value = "保存项目合同分配wbs树", notes = "WbsTreeContractDTO")
-    public R saveWbsTreeInProject(@RequestBody WbsTreeContractDTO pawDTO) {
-        Boolean b = wbsTreeService.saveWbsTreeInProject(pawDTO);
-        if (b) {
-            return R.data(pawDTO, "操作成功");
+    @ApiOperation(value = "项目合同段私有库分配wbs树下拉框列表", notes = "null")
+    public R<WbsTreeAllListVO> findWbsTreeList(Integer type) {
+        WbsTreeAllListVO list = wbsTreeService.findWbsTreeList(type);
+        if (list != null) {
+            return R.data(list);
         }
-        return R.fail("操作失败");
+        return R.fail("未查询到信息");
+    }
 
+    /**
+     * 项目、合同段私有库wbs节点Tree加载
+     * (项目私有wbs设置界面,左侧加载可用,
+     * 项目分配wbs初始化时,右侧展示当前项目id的私有节点,左侧则展示的是分配wbs树保存后引用的哪个项目id下的私有树
+     * 合同段分配wbs时进入默认加载左侧节点树可用)
+     */
+    @GetMapping("/tree")
+    @ApiOperationSupport(order = 10)
+    @ApiOperation(value = "查询项目私有wbs节点树形结构(多个接口复用)", notes = "wbsId、项目id")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "projectId", value = "项目id", required = true),
+            @ApiImplicitParam(name = "wbsId", value = "wbsId", required = true)
+    })
+    public R<List<WbsTreePrivateVO>> tree(String wbsId, String projectId) {
+        List<WbsTreePrivateVO> tree = wbsTreePrivateService.tree(wbsId, projectId);
+        if (tree != null && tree.size() > 0) {
+            return R.data(tree);
+        }
+        return R.fail(200, "未查询到信息");
     }
 
+
     /**
-     * 项目合同分配wbs树列表
+     * 保存或修改项目合同分配wbs树
      */
-    @GetMapping("/findWbsTreeList")
+    @PostMapping("/submitWbsTreeInProject")
     @ApiOperationSupport(order = 9)
-    @ApiOperation(value = "项目合同分配wbs树列表", notes = "WbsTreeContractDTO")
-    public R<WbsTreeContractVO> findWbsTreeList() {
-        WbsTreeContractVO list = wbsTreeService.findWbsTreeList();
-        if (list != null) {
-            return R.data(list, "查询成功");
+    @ApiOperation(value = "保存或修改项目合同分配wbs树", notes = "传入节点ids,wbsId(如果引用是其他私有库,那就是该库的项目id),项目id,合同段id")
+    public R submitWbsTreeInProject(@RequestBody WbsTreeContractDTO pawDTO) {
+        Boolean b = wbsTreeService.submitWbsTreeInProject(pawDTO);
+        if (b) {
+            return R.data(pawDTO, "操作成功");
         }
-        return R.fail("查询失败");
+        return R.fail("操作失败");
+
     }
 
 

+ 120 - 106
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsInfoController.java

@@ -40,6 +40,8 @@ import org.springblade.manager.wrapper.WbsInfoWrapper;
 import org.springblade.manager.service.IWbsInfoService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.util.List;
+
 /**
  * wbs动态库信息 控制器
  *
@@ -52,112 +54,124 @@ import org.springblade.core.boot.ctrl.BladeController;
 @Api(value = "wbs动态库信息", tags = "wbs动态库信息接口")
 public class WbsInfoController extends BladeController {
 
-	private final IWbsInfoService wbsInfoService;
-	private final IWbsTreeService wbsTreeService;
-
-	/**
-	 * 详情
-	 */
-	@GetMapping("/detail")
-	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "详情", notes = "传入id")
-	@ApiImplicitParam(name = "id", value = "id", required = true)
-	public R<WbsInfoVO> detail(WbsInfoDTO wbsInfo) {
-		WbsInfo detail = wbsInfoService.getOne(Condition.getQueryWrapper(wbsInfo));
-		return R.data(WbsInfoWrapper.build().entityVO(detail));
-	}
-
-	/**
-	 * 分页 wbs动态库信息
-	 */
-	@GetMapping("/list")
-	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "分页", notes = "传入wbsInfo")
-	public R<IPage<WbsInfoVO>> list(WbsInfoDTO wbsInfo, Query query) {
-		IPage<WbsInfo> pages = wbsInfoService.page(Condition.getPage(query), Condition.getQueryWrapper(wbsInfo));
-		return R.data(WbsInfoWrapper.build().pageVO(pages));
-	}
-
-
-	/**
-	 * 自定义分页 wbs动态库信息
-	 */
-	@GetMapping("/page")
-	@ApiOperationSupport(order = 3)
-	@ApiOperation(value = "自定义分页", notes = "传入wbsInfo")
-	@ApiImplicitParams(value = {
-		@ApiImplicitParam(name = "current", value = "当前页", required = true),
-		@ApiImplicitParam(name = "size", value = "每页的数量", required = true)
-	})
-	public R<IPage<WbsInfoVO>> page(WbsInfoVO wbsInfo, Query query) {
-		IPage<WbsInfoVO> pages = wbsInfoService.selectWbsInfoPage(Condition.getPage(query), wbsInfo);
-		return R.data(pages);
-	}
-
-	/**
-	 * 新增 wbs动态库信息
-	 */
-	@PostMapping("/save")
-	@ApiOperationSupport(order = 4)
-	@ApiOperation(value = "新增", notes = "传入wbsInfo")
-	public R save(@Valid @RequestBody WbsInfoDTO wbsInfo) {
-		return R.status(wbsInfoService.save(wbsInfo));
-	}
-
-	/**
-	 * 修改 wbs动态库信息
-	 */
-	@PostMapping("/update")
-	@ApiOperationSupport(order = 5)
-	@ApiOperation(value = "修改", notes = "传入wbsInfo")
-	@ApiImplicitParam(value = "id",name = "id",required = true)
-	public R update(@Valid @RequestBody WbsInfoDTO wbsInfo) {
-		return R.status(wbsInfoService.updateById(wbsInfo));
-	}
-
-	/**
-	 * 新增或修改 wbs动态库信息
-	 */
-	@PostMapping("/submit")
-	@ApiOperationSupport(order = 6)
-	@ApiOperation(value = "新增或修改", notes = "传入wbsInfo")
-	@ApiImplicitParam(value = "id",name = "id",required = true)
-	@Transactional(rollbackFor = Exception.class)
-	public R submit(@Valid @RequestBody WbsInfoDTO wbsInfo) {
-		boolean result1 = wbsInfoService.saveOrUpdate(wbsInfo);
-		if (result1){
-			Long wbsId = wbsInfo.getId();
-			String nodeName = wbsInfo.getWbsName();
-			//初始化wbs动态库树的根节点
-			WbsTree wbsTree = new WbsTree();
-			wbsTree.setWbsId(String.valueOf(wbsId));
-			wbsTree.setTenantId(AuthUtil.getTenantId());
-			wbsTree.setParentId(0L);
-			wbsTree.setAncestors("0");
-			wbsTree.setDeptCategory(1);
-			wbsTree.setDeptName(nodeName);
-			wbsTree.setFullName(nodeName);
-//			wbsTree.setSort(1);
-			wbsTree.setType(1);
-//			wbsTree.setTableType(-1);
-			boolean result2 = wbsTreeService.save(wbsTree);
-			if (result2){
-				return R.data(wbsInfo,"操作成功");
-			}
-		}
-		return R.fail("操作失败");
-	}
-
-
-	/**
-	 * 删除 wbs动态库信息
-	 */
-	@PostMapping("/remove")
-	@ApiOperationSupport(order = 7)
-	@ApiOperation(value = "逻辑删除", notes = "传入ids")
-	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-		return R.status(wbsInfoService.deleteLogic(Func.toLongList(ids)));
-	}
+    private final IWbsInfoService wbsInfoService;
+    private final IWbsTreeService wbsTreeService;
+
+    /**
+     * 详情
+     */
+    @GetMapping("/detail")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "详情", notes = "传入id")
+    @ApiImplicitParam(name = "id", value = "id", required = true)
+    public R<WbsInfoVO> detail(WbsInfoDTO wbsInfo) {
+        WbsInfo detail = wbsInfoService.getOne(Condition.getQueryWrapper(wbsInfo));
+        return R.data(WbsInfoWrapper.build().entityVO(detail));
+    }
+
+    /**
+     * 分页 wbs动态库信息
+     */
+    @GetMapping("/list")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "分页", notes = "传入wbsInfo")
+    public R<IPage<WbsInfoVO>> list(WbsInfoDTO wbsInfo, Query query) {
+        IPage<WbsInfo> pages = wbsInfoService.page(Condition.getPage(query), Condition.getQueryWrapper(wbsInfo));
+        return R.data(WbsInfoWrapper.build().pageVO(pages));
+    }
+
+
+    /**
+     * 自定义分页 wbs动态库信息
+     */
+    @GetMapping("/page")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "自定义分页", notes = "传入wbsInfo")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "current", value = "当前页", required = true),
+            @ApiImplicitParam(name = "size", value = "每页的数量", required = true)
+    })
+    public R<IPage<WbsInfo>> page(WbsInfo wbsInfo, Query query) {
+        IPage<WbsInfo> pages = wbsInfoService.selectWbsInfoPage(Condition.getPage(query), wbsInfo);
+        return R.data(pages);
+    }
+
+    /**
+     * 新增 wbs动态库信息
+     */
+    @PostMapping("/save")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "新增", notes = "传入wbsInfo")
+    public R save(@Valid @RequestBody WbsInfoDTO wbsInfo) {
+        return R.status(wbsInfoService.save(wbsInfo));
+    }
+
+    /**
+     * 修改 wbs动态库信息
+     */
+    @PostMapping("/update")
+    @ApiOperationSupport(order = 5)
+    @ApiOperation(value = "修改", notes = "传入wbsInfo")
+    @ApiImplicitParam(value = "id", name = "id", required = true)
+    public R update(@Valid @RequestBody WbsInfoDTO wbsInfo) {
+        return R.status(wbsInfoService.updateById(wbsInfo));
+    }
+
+    /**
+     * 新增wbs动态库信息
+     */
+    @PostMapping("/submit")
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "新增", notes = "传入wbsInfo")
+    @ApiImplicitParam(value = "id", name = "id", required = true)
+    @Transactional(rollbackFor = Exception.class)
+    public R submit(@Valid @RequestBody WbsInfoDTO wbsInfo) {
+        boolean result1 = wbsInfoService.saveOrUpdate(wbsInfo);
+        if (result1) {
+            Long wbsId = wbsInfo.getId();
+            String nodeName = wbsInfo.getWbsName();
+            //初始化wbs动态库树的根节点
+            WbsTree wbsTree = new WbsTree();
+            wbsTree.setWbsId(String.valueOf(wbsId));
+            wbsTree.setTenantId(AuthUtil.getTenantId());
+            wbsTree.setParentId(0L);
+            wbsTree.setAncestors("0");
+            wbsTree.setDeptCategory(1);
+            wbsTree.setDeptName(nodeName);
+            wbsTree.setFullName(nodeName);
+            wbsTree.setType(1);
+            boolean result2 = wbsTreeService.save(wbsTree);
+            if (result2) {
+                return R.data(wbsInfo, "操作成功");
+            }
+        }
+        return R.fail("操作失败");
+    }
+
+
+    /**
+     * 删除 wbs动态库信息
+     */
+    @PostMapping("/remove")
+    @ApiOperationSupport(order = 7)
+    @ApiOperation(value = "逻辑删除", notes = "传入ids")
+    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+        return R.status(wbsInfoService.deleteLogic(Func.toLongList(ids)));
+    }
+
+    /**
+     * 根据类型查找
+     */
+    @GetMapping("/findByWbsType")
+    @ApiOperationSupport(order = 8)
+    @ApiOperation(value = "根据类型查找", notes = "传入type,1=质检 2=实验 3=计量")
+    public R<List<WbsInfo>> findByWbsType(String type) {
+        List<WbsInfo> wbsInfos = wbsInfoService.findByWbsType(type);
+        if (wbsInfos != null) {
+            return R.data(wbsInfos);
+        }
+        return R.fail("未查询到信息");
+    }
 
 
 }

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

@@ -115,7 +115,7 @@ public class WbsTreeController extends BladeController {
     @ApiOperationSupport(order = 3)
     @ApiOperation(value = "节点树形结构", notes = "传入租户Id、wbsId、type、请求头token")
     @ApiImplicitParams(value = {
-            @ApiImplicitParam(name = "tenantId", value = "租户id", required = true),
+            @ApiImplicitParam(name = "tenantId", value = "租户id", required = false),
             @ApiImplicitParam(name = "wbsId", value = "wbsId", required = true),
             @ApiImplicitParam(name = "type", value = "节点类型type '1'节点or'2'表单", defaultValue = "", required = false),
     })

+ 6 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.java

@@ -19,12 +19,10 @@ package org.springblade.manager.mapper;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.manager.dto.FindAllUserByConditionDTO;
 import org.springblade.manager.entity.ContractInfo;
-import org.springblade.manager.vo.CRolePostVO;
-import org.springblade.manager.vo.ContractInfoVO;
+import org.springblade.manager.entity.WbsTree;
+import org.springblade.manager.vo.*;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.manager.vo.ContractlnfoCountVO;
-import org.springblade.manager.vo.ProjectInfoVO;
 import org.springblade.system.user.entity.User;
 
 import java.util.List;
@@ -66,6 +64,10 @@ public interface ContractInfoMapper extends BaseMapper<ContractInfo> {
 
     Boolean deleteFile(@Param("url") String url);
 
+    List<WbsTreeContractTreeVO> tree(@Param("wbsId") String wbsId,
+                                     @Param("projectId") String projectId,
+                                     @Param("contractId") String contractId);
+
 //    String selectStartFileId(@Param("id") String id);
 
 }

+ 35 - 10
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.xml

@@ -40,6 +40,16 @@
         <result column="contract_counts" property="contractCounts"/>
     </resultMap>
 
+    <resultMap id="treeNodeResultMap" type="org.springblade.manager.vo.TreeNodeVO">
+        <id column="id" property="id"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="title" property="title"/>
+        <result column="value" property="value"/>
+        <result column="key" property="key"/>
+        <result column="has_children" property="hasChildren"/>
+        <result column="type" property="type"/>
+    </resultMap>
+
 
     <update id="updatePasswordByUserId">
         update blade_user set password = #{password} where id = #{userId}
@@ -68,9 +78,9 @@
 
     <select id="findAllUserByCondition" resultType="org.springblade.system.user.vo.UserVO">
         SELECT
-            u.id as uId,mpau.id,pi.project_name,ci.contract_name,u.id as uid,u.`name`,u.account,u.`password`,u.`phone`
+        u.id as uId,mpau.id,pi.project_name,ci.contract_name,u.id as uid,u.`name`,u.account,u.`password`,u.`phone`
         FROM
-            blade_user u
+        blade_user u
         INNER JOIN m_project_assignment_user mpau ON u.id = mpau.user_id
         INNER JOIN blade_post p ON p.id = mpau.post_id
         INNER JOIN blade_role r ON r.id = mpau.role_id
@@ -91,19 +101,19 @@
 
     <select id="findUserListByCondition" resultType="org.springblade.system.user.vo.UserVO">
         SELECT
-            mpau.id,
-            u.`name`,
-            u.account,
-            (select post_name from blade_post where id = u.post_id) as postName,
-            u.`password`,
-            u.`phone`
+        mpau.id,
+        u.`name`,
+        u.account,
+        (select post_name from blade_post where id = u.post_id) as postName,
+        u.`password`,
+        u.`phone`
         FROM
-            blade_user u
+        blade_user u
         INNER JOIN m_project_assignment_user mpau ON u.id = mpau.user_id
         INNER JOIN blade_role r ON r.id = mpau.role_id
         INNER JOIN m_project_info pi ON pi.id = mpau.project_id
         WHERE
-            mpau.is_deleted = 0
+        mpau.is_deleted = 0
         AND mpau.`status` = 1
         AND mpau.project_id = #{Values.pId}
         AND mpau.role_id = #{Values.rId}
@@ -128,6 +138,21 @@
         and is_deleted = 0 and `status`	= 1
     </select>
 
+    <select id="tree" resultMap="treeNodeResultMap">
+        select id, parent_id, dept_name as title,type as "type", id as "value", id as "key" from m_wbs_tree_contract
+        where
+        is_deleted = 0 and status = 1
+        <if test="wbsId!=null and wbsId!=''">
+            and wbs_id = #{wbsId}
+        </if>
+        <if test="projectId !=null and projectId!=''">
+            and project_id = #{projectId}
+        </if>
+        <if test="contractId!=null and contractId!=''">
+            and contract_id = #{contractId}
+        </if>
+        ORDER BY sort
+    </select>
 
 
 </mapper>

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

@@ -29,6 +29,7 @@
         <result column="project_remark" property="projectRemark"/>
         <result column="state" property="state"/>
         <result column="is_open_sign" property="isOpenSign"/>
+        <result column="reference_wbs_template_id" property="referenceWbsTemplateId"/>
     </resultMap>
 
 

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

@@ -39,7 +39,7 @@ public interface WbsInfoMapper extends BaseMapper<WbsInfo> {
 	 * @param wbsInfo
 	 * @return
 	 */
-	List<WbsInfoVO> selectWbsInfoPage(IPage page, WbsInfoVO wbsInfo);
+	List<WbsInfo> selectWbsInfoPage(IPage page, WbsInfo wbsInfo);
 
-    List<WbsInfo> selectAll();
+    List<WbsInfo> selectAll(Integer type);
 }

+ 20 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsInfoMapper.xml

@@ -15,13 +15,30 @@
         <result column="wbs_name" property="wbsName"/>
         <result column="wbs_type" property="wbsType"/>
     </resultMap>
-
+    <resultMap id="resultMap2" type="org.springblade.manager.vo.WbsInfoVO">
+        <result column="id" property="id"/>
+        <result column="wbs_name" property="wbsName"/>
+        <result column="wbs_type" property="wbsType"/>
+    </resultMap>
 
     <select id="selectWbsInfoPage" resultMap="wbsInfoResultMap">
         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 id="selectAll" resultMap="resultMap2">
+        SELECT
+            id,
+            wbs_name,
+            wbs_type
+        FROM
+            m_wbs_info
+        WHERE
+            is_deleted = 0
+            AND STATUS = 1
+            <if test="type != null and type != ''">
+                AND wbs_type = #{type}
+            </if>
+        GROUP BY
+            wbs_name
     </select>
 
 </mapper>

+ 30 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java

@@ -1,14 +1,42 @@
 package org.springblade.manager.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.manager.dto.WbsTreeContractDTO;
+import org.apache.ibatis.annotations.Param;
 import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.entity.WbsTreePrivate;
+import org.springblade.manager.vo.WbsTreeContractVO;
 
 import java.util.List;
 
 
 public interface WbsTreeContractMapper extends BaseMapper<WbsTreeContract> {
 
-    List<WbsTreeContractDTO> selectAll();
+    List<WbsTreeContractVO> selectAll();
 
+    Boolean insertWbsTreeContract(@Param("contractId") String contractId,
+                                  @Param("wbsTree") WbsTreePrivate wbsTree);
+
+    void deleteByCondition(@Param("id") String id,
+                           @Param("wbsId") String wbsId,
+                           @Param("projectId") String projectId,
+                           @Param("contractId") String contractId);
+
+    WbsTreeContract selectByCondition(@Param("id") String id,
+                                      @Param("projectId") String projectId,
+                                      @Param("contractId") String contractId,
+                                      @Param("wbsId") String wbsId);
+
+    List<WbsTreeContract> findAllNodeList2(@Param("projectId") String projectId,
+                                           @Param("contractId") String contractId,
+                                           @Param("wbsId") String wbsId);
+
+    void updateByCondition(@Param("id") String id,
+                           @Param("projectId") String projectId,
+                           @Param("contractId") String contractId,
+                           @Param("wbsId") String wbsId);
+
+    WbsTreeContract selectByCondition2(@Param("id")String id,
+                                       @Param("projectId") String projectId,
+                                       @Param("contractId") String contractId,
+                                       @Param("wbsId")String wbsId);
 }

+ 93 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -3,7 +3,7 @@
 <mapper namespace="org.springblade.manager.mapper.WbsTreeContractMapper">
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="ResultMap" type="org.springblade.manager.dto.WbsTreeContractDTO">
+    <resultMap id="ResultMap" type="org.springblade.manager.entity.WbsTreeContract">
         <result column="id" property="id"/>
         <result column="wbs_id" property="wbsId"/>
         <result column="project_id" property="projectId"/>
@@ -31,20 +31,105 @@
         <result column="is_expernode" property="isExpernode"/>
         <result column="table_owner" property="tableOwner"/>
         <result column="major_data_type" property="majorDataType"/>
+        <result column="init_table_name" property="initTableName"/>
+        <result column="is_link_table" property="isLinkTable"/>
     </resultMap>
 
-    <resultMap id="WbsTreeContractVO2" type="org.springblade.manager.vo.WbsTreeContractVO2">
+    <resultMap id="resultMap2" type="org.springblade.manager.vo.WbsTreeContractVO">
         <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="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;
+
+    <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},#{wbsTree.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>
+
+    <update id="deleteByCondition">
+        UPDATE m_wbs_tree_contract
+        SET is_deleted = 1
+        WHERE  id = #{id}
+        AND wbs_id = #{wbsId}
+        AND project_id = #{projectId}
+        AND contract_id = #{contractId}
+    </update>
+
+    <update id="updateByCondition">
+        UPDATE m_wbs_tree_contract
+        SET is_deleted = 0
+        WHERE id = #{id}
+        AND wbs_id = #{wbsId}
+        AND project_id =#{projectId}
+        AND contract_id = #{contractId}
+    </update>
+
+
+    <select id="selectAll" resultMap="resultMap2">
+        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>
+
+    <select id="selectByCondition" resultType="org.springblade.manager.entity.WbsTreeContract">
+        SELECT
+            *
+        FROM
+            m_wbs_tree_contract
+        WHERE
+            id = #{id}
+            AND project_id = #{projectId}
+            AND contract_id = #{contractId}
+            AND wbs_id = #{wbsId}
+            AND STATUS = 1
+            AND is_deleted = 0
+    </select>
+
+    <select id="selectByCondition2" resultType="org.springblade.manager.entity.WbsTreeContract">
+        SELECT
+            *
+        FROM
+            m_wbs_tree_contract
+        WHERE
+            id = #{id}
+            AND project_id = #{projectId}
+            AND contract_id = #{contractId}
+            AND wbs_id = #{wbsId}
+            AND STATUS = 1
+            AND is_deleted = 1
+    </select>
+
+    <select id="findAllNodeList2" resultType="org.springblade.manager.entity.WbsTreeContract">
+        SELECT
+            *
+        FROM
+            m_wbs_tree_contract
+        WHERE
+            project_id = #{projectId}
+        AND contract_id = #{contractId}
+        AND wbs_id = #{wbsId}
+        AND STATUS = 1
+        AND is_deleted = 0
     </select>
 
 

+ 5 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.java

@@ -105,4 +105,9 @@ public interface WbsTreeMapper extends BaseMapper<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);
+
+    Integer selectRepeatByProjectId(String projectId);
+
+    List<WbsTree> findAllNodeTableList(String wbsId);
+
 }

+ 19 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml

@@ -29,6 +29,8 @@
         <result column="is_expernode" property="isExpernode"/>
         <result column="table_owner" property="tableOwner"/>
         <result column="major_data_type" property="majorDataType"/>
+        <result column="init_table_name" property="initTableName"/>
+        <result column="is_link_table" property="isLinkTable"/>
     </resultMap>
 
     <resultMap id="treeNodeResultMap" type="org.springblade.manager.vo.TreeNodeVO">
@@ -115,6 +117,7 @@
     <select id="tree" resultMap="treeNodeResultMap">
         select id, parent_id, dept_name as title,type as "type", id as "value", id as "key" from m_wbs_tree where
         is_deleted = 0
+        and status = 1
         <if test="wbsId!=null and wbsId!=''">
             and wbs_id = #{wbsId}
         </if>
@@ -154,6 +157,7 @@
         </if>
         AND dept.wbs_id = #{wbsId}
         AND dept.type = 1
+        AND status = 1
         ORDER BY dept.sort
     </select>
 
@@ -186,6 +190,21 @@
         WHERE
             is_deleted = 0 and f_id = #{id}
     </select>
+    <select id="selectRepeatByProjectId" resultType="java.lang.Integer">
+        SELECT COUNT(*) FROM m_wbs_tree_private WHERE project_id = #{projectId} AND status = 1 AND is_deleted = 0
+    </select>
+
+    <select id="findAllNodeTableList" resultType="org.springblade.manager.entity.WbsTree">
+        SELECT
+            *
+        FROM
+            m_wbs_tree
+        WHERE
+            type = 2
+            AND is_deleted = 0
+            AND `status` = 1
+            AND wbs_id = #{wbsId}
+    </select>
 
 
 </mapper>

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

@@ -0,0 +1,32 @@
+package org.springblade.manager.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.manager.entity.WbsTreePrivate;
+import org.springblade.manager.vo.WbsTreePrivateVO;
+import org.springblade.manager.vo.WbsTreeVO;
+
+import java.util.List;
+
+
+/**
+ * Mapper 接口
+ *
+ * @author liuyc
+ * @since 2022-05-24
+ */
+public interface WbsTreePrivateMapper extends BaseMapper<WbsTreePrivate> {
+    List<WbsTreePrivate> selectAll();
+
+    /**
+     * 获取树形节点
+     */
+    List<WbsTreePrivateVO> tree(@Param("wbsId") String wbsId,
+                                @Param("projectId") String projectId);
+
+
+    WbsTreePrivate selectByCondition(@Param("id") String id,
+                                     @Param("projectId") String projectId);
+
+    void deleteByCondition(String id, String wbsId, String projectId);
+}

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

@@ -0,0 +1,97 @@
+<?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.WbsTreePrivateMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="wbsTreeResultMap" type="org.springblade.manager.entity.WbsTreePrivate">
+        <result column="project_id" property="projectId"/>
+        <result column="id" property="id"/>
+        <result column="w_id" property="wbsId"/>
+        <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"/>
+        <result column="init_table_name" property="initTableName"/>
+        <result column="is_link_table" property="isLinkTable"/>
+    </resultMap>
+
+    <resultMap id="resultMap2" type="org.springblade.manager.vo.WbsTreePrivateVO2">
+        <result column="wbs_id" property="wbsId"/>
+        <result column="project_id" property="projectId"/>
+        <result column="project_name" property="projectName"/>
+    </resultMap>
+
+    <resultMap id="treeNodeResultMap" type="org.springblade.manager.vo.TreeNodeVO">
+        <id column="id" property="id"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="title" property="title"/>
+        <result column="value" property="value"/>
+        <result column="key" property="key"/>
+        <result column="has_children" property="hasChildren"/>
+        <result column="type" property="type"/>
+    </resultMap>
+
+    <update id="deleteByCondition">
+        UPDATE m_wbs_tree_private SET is_deleted = 1
+        AND id = #{id}
+        AND id = #{}
+    </update>
+
+    <select id="selectAll" resultMap="resultMap2">
+        SELECT
+            wtp.wbs_id,
+            wtp.project_id,
+            ( SELECT project_name FROM m_project_info pi WHERE wtp.project_id = pi.id ) AS project_name
+        FROM
+            m_wbs_tree_private AS wtp
+        WHERE
+            is_deleted = 0
+            AND STATUS = 1
+        GROUP BY
+            project_id
+    </select>
+
+    <select id="tree" resultMap="treeNodeResultMap">
+        select id, parent_id, dept_name as title,type as "type", id as "value", id as "key" from m_wbs_tree_private
+        where
+        is_deleted = 0
+        and status = 1
+        and `type` = 1
+        and project_id = #{projectId}
+        <if test="wbsId!=null and wbsId!=''">
+            and wbs_id = #{wbsId}
+        </if>
+        ORDER BY sort
+    </select>
+    <select id="selectByCondition" resultType="org.springblade.manager.entity.WbsTreePrivate">
+        SELECT
+            *
+        FROM
+            m_wbs_tree_private
+        WHERE
+            id = #{id}
+            AND project_id = #{projectId}
+            AND STATUS = 1
+            AND is_deleted = 0
+    </select>
+
+</mapper>

+ 6 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IContractInfoService.java

@@ -22,6 +22,8 @@ import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.vo.CRolePostVO;
 import org.springblade.manager.vo.ContractInfoVO;
 import org.springblade.core.mp.base.BaseService;
+import org.springblade.manager.vo.WbsTreeContractTreeVO;
+import org.springblade.manager.vo.WbsTreeVO;
 import org.springblade.system.user.entity.User;
 
 
@@ -54,4 +56,8 @@ public interface IContractInfoService extends BaseService<ContractInfo> {
     String selectStartFileId(String startFileUrl);
 
     Boolean deleteFile(String url);
+
+    List<WbsTreeContractTreeVO> tree(String wbsId, String projectId, String contractId);
+
+
 }

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

@@ -22,6 +22,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.manager.entity.WbsInfo;
 import org.springblade.manager.vo.WbsInfoVO;
 
+import java.util.List;
+
 /**
  * wbs动态库信息 服务类
  *
@@ -37,6 +39,7 @@ public interface IWbsInfoService extends BaseService<WbsInfo> {
 	 * @param wbsInfo
 	 * @return
 	 */
-	IPage<WbsInfoVO> selectWbsInfoPage(IPage<WbsInfoVO> page, WbsInfoVO wbsInfo);
+	IPage<WbsInfo> selectWbsInfoPage(IPage<WbsInfo> page, WbsInfo wbsInfo);
 
+    List<WbsInfo> findByWbsType(String type);
 }

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

@@ -8,4 +8,6 @@ import org.springblade.manager.entity.WbsTreeContract;
 
 public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
 
+    Boolean submitWbsTreeInContract(WbsTreeContractDTO wbsTreeContractDTO);
+
 }

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

@@ -0,0 +1,19 @@
+package org.springblade.manager.service;
+
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.manager.entity.WbsTreePrivate;
+import org.springblade.manager.vo.WbsTreePrivateVO;
+
+
+import java.util.List;
+
+/**
+ * 服务类
+ *
+ * @author liuyc
+ * @since 2022-05-24
+ */
+public interface IWbsTreePrivateService extends BaseService<WbsTreePrivate> {
+    List<WbsTreePrivateVO> tree(String wbsId,String projectId);
+
+}

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

@@ -16,6 +16,7 @@
  */
 package org.springblade.manager.service;
 
+import io.swagger.models.auth.In;
 import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.core.tool.api.R;
@@ -23,11 +24,9 @@ import org.springblade.manager.dto.FormElementDTO;
 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.WbsTreeAllListVO;
 import org.springblade.manager.vo.WbsTreeVO;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
@@ -67,7 +66,6 @@ public interface IWbsTreeService extends BaseService<WbsTree> {
      */
     List<WbsTreeVO> tree(String wbsId, String tenantId, String type);
 
-
     /**
      * 提交
      *
@@ -76,7 +74,6 @@ public interface IWbsTreeService extends BaseService<WbsTree> {
      */
     boolean submit(WbsTree dept);
 
-
     /**
      * 表单查询(根据节点ID查询当前表单)
      */
@@ -94,9 +91,9 @@ public interface IWbsTreeService extends BaseService<WbsTree> {
 
     Boolean importWbsTree(MultipartFile excelFile, WbsTree wbsTreeFu, WbsTree wbsTree1) throws IOException;
 
-    Boolean saveWbsTreeInProject(WbsTreeContractDTO pawDTO);
+    Boolean submitWbsTreeInProject(WbsTreeContractDTO pawDTO);
 
-    WbsTreeContractVO findWbsTreeList();
+    WbsTreeAllListVO findWbsTreeList(Integer type);
 
     R saveFormElement(FormElementDTO formElementDTO);
 }

+ 11 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java

@@ -17,6 +17,7 @@
 package org.springblade.manager.service.impl;
 
 import org.apache.ibatis.annotations.Param;
+import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springblade.manager.dto.FindAllUserByConditionDTO;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.vo.CRolePostVO;
@@ -24,6 +25,8 @@ import org.springblade.manager.vo.ContractInfoVO;
 import org.springblade.manager.mapper.ContractInfoMapper;
 import org.springblade.manager.service.IContractInfoService;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.manager.vo.WbsTreeContractTreeVO;
+import org.springblade.manager.vo.WbsTreeVO;
 import org.springblade.system.user.entity.User;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -87,9 +90,9 @@ public class ContractInfoServiceImpl
     }
 
     @Override
-    public Boolean updatePasswordByUserId(String userId,String password) {
-        Integer row = contractInfoMapper.updatePasswordByUserId(userId,password);
-        if (row > 0){
+    public Boolean updatePasswordByUserId(String userId, String password) {
+        Integer row = contractInfoMapper.updatePasswordByUserId(userId, password);
+        if (row > 0) {
             return true;
         }
         return false;
@@ -105,4 +108,9 @@ public class ContractInfoServiceImpl
     public Boolean deleteFile(String url) {
         return contractInfoMapper.deleteFile(url);
     }
+
+    @Override
+    public List<WbsTreeContractTreeVO> tree(String wbsId, String projectId, String contractId) {
+        return ForestNodeMerger.merge(baseMapper.tree(wbsId, projectId, contractId));
+    }
 }

+ 14 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsInfoServiceImpl.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.manager.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.springblade.manager.mapper.WbsInfoMapper;
 import org.springblade.manager.service.IWbsInfoService;
 import org.springblade.core.mp.base.BaseServiceImpl;
@@ -24,6 +25,8 @@ import org.springblade.manager.vo.WbsInfoVO;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.List;
+
 /**
  * wbs动态库信息 服务实现类
  *
@@ -33,9 +36,16 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 @Service
 public class WbsInfoServiceImpl extends BaseServiceImpl<WbsInfoMapper, WbsInfo> implements IWbsInfoService {
 
-	@Override
-	public IPage<WbsInfoVO> selectWbsInfoPage(IPage<WbsInfoVO> page, WbsInfoVO wbsInfo) {
-		return page.setRecords(baseMapper.selectWbsInfoPage(page, wbsInfo));
-	}
+    @Override
+    public IPage<WbsInfo> selectWbsInfoPage(IPage<WbsInfo> page, WbsInfo wbsInfo) {
+        return page.setRecords(baseMapper.selectWbsInfoPage(page, wbsInfo));
+    }
+
+    @Override
+    public List<WbsInfo> findByWbsType(String type) {
+        QueryWrapper<WbsInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("wbs_type", type);
+        return baseMapper.selectList(queryWrapper);
+    }
 
 }

+ 120 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -1,17 +1,134 @@
 package org.springblade.manager.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import lombok.AllArgsConstructor;
+import org.apache.commons.lang.StringUtils;
+import org.springblade.business.entity.ConstructionLedger;
+import org.springblade.business.mapper.ConstructionLedgerMapper;
+import org.springblade.core.log.logger.BladeLogger;
 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.entity.WbsTreePrivate;
 import org.springblade.manager.mapper.WbsTreeContractMapper;
+import org.springblade.manager.mapper.WbsTreeMapper;
+import org.springblade.manager.mapper.WbsTreePrivateMapper;
 import org.springblade.manager.service.IWbsTreeContractService;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
 
 @Service
+@AllArgsConstructor
 public class WbsTreeContractServiceImpl
         extends BaseServiceImpl<WbsTreeContractMapper, WbsTreeContract>
         implements IWbsTreeContractService {
 
-}
+    private final BladeLogger logger;
+    private final WbsTreePrivateServiceImpl wbsTreePrivateService;
+    private final ConstructionLedgerMapper constructionLedgerMapper;
+    private final WbsTreePrivateMapper wbsTreePrivateMapper;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean submitWbsTreeInContract(WbsTreeContractDTO pawDTO) {
+        String wbsTreeIds = pawDTO.getWbsTreeIds();
+        if (StringUtils.isEmpty(wbsTreeIds)) {
+            return false;
+        }
+        String[] ids = wbsTreeIds.split(",");
+        List<String> idList1 = Arrays.asList(ids);
+        List<String> idList2 = new ArrayList<>();
+        //查找合同段wbs私有库的节点树
+        List<WbsTreeContract> list = baseMapper.findAllNodeList2(pawDTO.getProjectId(), pawDTO.getContractId(), pawDTO.getWbsId());
+        for (WbsTreeContract wbsTreeContract : list) {
+            idList2.add(String.valueOf(wbsTreeContract.getId()));
+        }
+        //比较项目wbs私有树与合同段wbs树是否相同,相同则不修改,不同则修改
+        List<String> diffrent = getDiffrent(idList1, idList2);
+//        diffrent.forEach(System.out::print);
+        if (diffrent.size() == 0) { //相同
+            return false;
+        } else { //不相同
+            if (idList1.size() > idList2.size()) {  //根据ids新增多余合同段wbs树节点
+                for (String id : diffrent) {
+                    //合同段wbs节点库存在该节点且为删除状态,那么修改is_deleted=0,否则新增
+                    WbsTreeContract wbsTreeContract = baseMapper.selectByCondition2(id, pawDTO.getProjectId(), pawDTO.getContractId(), pawDTO.getWbsId());
+                    if (wbsTreeContract != null) {
+                        baseMapper.updateByCondition(id, pawDTO.getProjectId(), pawDTO.getContractId(), pawDTO.getWbsId());
+                    } else {
+                        //根据id、projectId获取WbsTreePrivate对象
+                        WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectByCondition(id, pawDTO.getProjectId());
+                        Boolean b1 = baseMapper.insertWbsTreeContract(pawDTO.getContractId(), wbsTreePrivate);
+                        if (b1) {
+                            logger.info(wbsTreePrivate.getId().toString(), "初始化合同段wbs树成功");
+                        }
+                        //初始化施工台账数据
+                        if (wbsTreePrivate.getDeptCategory() == 6
+                                && wbsTreePrivate.getDeptCategory() != null
+                                && !("").equals(wbsTreePrivate.getDeptCategory())) {
+                            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(), "初始化施工台账成功");
+                            }
+                        }
+                    }
+                }
+            } else { //根据id、wbsID、projectId、contractId逻辑删除当前多余的合同段wbs树节点
+                for (String id : diffrent) {
+                    baseMapper.deleteByCondition(id, pawDTO.getWbsId(), pawDTO.getProjectId(), pawDTO.getContractId());
+                }
+            }
+        }
+        //TODO 初始化元素表、公式
+        return true;
+    }
+
+    //比较两个List不同值
+    public static List<String> getDiffrent(List<String> list1, List<String> list2) {
+        List<String> diff = new ArrayList<String>();
+        List<String> maxList = list1;
+        List<String> minList = list2;
+        if (list2.size() > list1.size()) {
+            maxList = list2;
+            minList = list1;
+        }
+        Map<String, Integer> map = new HashMap<String, Integer>(maxList.size());
+        for (String string : maxList) {
+            map.put(string, 1);
+        }
+        for (String string : minList) {
+            if (map.get(string) != null) {
+                map.put(string, 2);
+                continue;
+            }
+            diff.add(string);
+        }
+        for (Map.Entry<String, Integer> entry : map.entrySet()) {
+            if (entry.getValue() == 1) {
+                diff.add(entry.getKey());
+            }
+        }
+        return diff;
+    }
+
+    private List<WbsTreeContract> findAllNodeList(String wbsTreeIds, String projectId, String contractId, String wbsId) {
+        String[] ids = wbsTreeIds.split(",");
+        List<Long> idList = new ArrayList<>();
+        List<WbsTreeContract> list = new ArrayList<>();
+        for (String id : ids) {
+            idList.add(Long.valueOf(id));
+            WbsTreeContract contract = baseMapper.selectByCondition(id, projectId, contractId, wbsId);
+            list.add(contract);
+        }
+        return list;
+    }
+
+
+}

+ 38 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -0,0 +1,38 @@
+package org.springblade.manager.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.manager.entity.WbsTreePrivate;
+
+import org.springblade.manager.mapper.WbsTreePrivateMapper;
+import org.springblade.manager.service.IWbsTreePrivateService;
+import org.springblade.manager.vo.WbsTreePrivateVO;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+@AllArgsConstructor
+public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMapper, WbsTreePrivate> implements IWbsTreePrivateService {
+    @Override
+    public List<WbsTreePrivateVO> tree(String wbsId, String projectId) {
+        return ForestNodeMerger.merge(baseMapper.tree(wbsId, projectId));
+    }
+
+
+    public List<WbsTreePrivate> findAllNodeList(String wbsTreeIds, String projectId) {
+        String[] ids = wbsTreeIds.split(",");
+        List<Long> idList = new ArrayList<>();
+        List<WbsTreePrivate> list = new ArrayList<>();
+        for (String id : ids) {
+            idList.add(Long.valueOf(id));
+            WbsTreePrivate wbsTreePrivate = baseMapper.selectByCondition(id, projectId);
+            list.add(wbsTreePrivate);
+        }
+        return list;
+    }
+
+}

+ 83 - 44
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -21,32 +21,28 @@ import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
 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;
 import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.utils.BeanUtil;
 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.WbsTreeContractDTO;
-import org.springblade.manager.entity.WbsInfo;
-import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.entity.*;
 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.mapper.WbsTreePrivateMapper;
 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.WbsTreeAllListVO;
 import org.springblade.manager.vo.WbsTreeContractVO;
 import org.springblade.manager.vo.WbsTreeVO;
 import org.springframework.stereotype.Service;
@@ -71,9 +67,12 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     private final BladeLogger logger;
     private final WbsTreeMapper wbsTreeMapper;
     private final ConstructionLedgerMapper constructionLedgerMapper;
+    private final IWbsFormElementService wbsFormElementService;
     private final WbsInfoMapper wbsInfoMapper;
     private final WbsTreeContractMapper wbsTreeContractMapper;
-    private final IWbsFormElementService wbsFormElementService;
+    private final WbsTreePrivateMapper wbsTreePrivateMapper;
+    private final WbsTreePrivateServiceImpl wbsTreePrivateService;
+
 
     @Override
     public IPage<WbsTreeVO> selectWbsTreePage(IPage<WbsTreeVO> page, WbsTreeVO wbsTree) {
@@ -109,6 +108,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             String ancestors = parent.getAncestors() + StringPool.COMMA + dept.getParentId();
             dept.setAncestors(ancestors);
         }
+        dept.setStatus(1);
         dept.setIsDeleted(BladeConstant.DB_NOT_DELETED);
         return saveOrUpdate(dept);
     }
@@ -254,45 +254,81 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean saveWbsTreeInProject(WbsTreeContractDTO pawDTO) {
+    public Boolean submitWbsTreeInProject(WbsTreeContractDTO pawDTO) {
         String wbsTreeIds = pawDTO.getWbsTreeIds();
         if (StringUtils.isEmpty(wbsTreeIds)) {
             return false;
         }
-        //获取节点ids,查询出所需节点树
-        List<WbsTree> list = findAllNodeList(wbsTreeIds);
-        if (list != null) {
-            list.forEach(System.out::print);
+        String[] ids = wbsTreeIds.split(",");
+        List<String> idList1 = Arrays.asList(ids);
+        List<String> idList2 = new ArrayList<>();
+        //查询出当前私有库下所有的wbs节点
+        QueryWrapper<WbsTreePrivate> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("project_id", pawDTO.getProjectId());
+        List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(queryWrapper);
+        for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
+            idList2.add(String.valueOf(wbsTreePrivate.getId()));
+        }
+        //比对
+        List<String> diffrent = WbsTreeContractServiceImpl.getDiffrent(idList1, idList2);
+        if (diffrent.size() == 0) { //相同
+            return false;
+        } else { //不相同
+            if (idList1.size() > idList2.size()){//根据ids新增多余项目私有wbs树节点
+
+            }else {//根据id、wbsID、projectId逻辑删除当前多余的项目私有wbs树节点
+                for (String id : diffrent) {
+                    wbsTreePrivateMapper.deleteByCondition(id,pawDTO.getWbsId(), pawDTO.getProjectId());
+                }
+            }
+        }
+
+
+
+
+
+
+        /*if (list != null) {
             //新增节点
             for (WbsTree wbsTree : list) {
-                //初始化wbs私有库
-                Integer row = baseMapper.insertWbsTreePrivate(pawDTO.getProjectId(), wbsTree);
-                if (row > 0) {
-                    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(), "施工台账初始化成功");
+                //判重
+                Integer r = baseMapper.selectRepeatByProjectId(pawDTO.getProjectId());
+                if (r <= 0) {
+                    //初始化wbs私有树,每个项目只初始化一次
+                    Integer row = baseMapper.insertWbsTreePrivate(pawDTO.getProjectId(), wbsTree);
+                    if (row > 0) {
+                        logger.info(wbsTree.getId().toString(), "初始化项目私有wbs树成功");
                     }
+                    //初始化创建合同段私有wbs树
+                    Boolean b1 = baseMapper.insertWbsTreeContract(pawDTO.getProjectId(), pawDTO.getContractId(), wbsTree);
+                    if (b1) {
+                        logger.info(wbsTree.getId().toString(), "初始化合同段wbs树成功");
+                    }
+                } else {
+                    return false;
                 }
                 //TODO 初始化元素表、公式
             }
         }
+        //通过wbs总树id获取当前树下的元素表信息
+        List<WbsTree> listTable = baseMapper.findAllNodeTableList(pawDTO.getWbsId());
+        if (listTable != null && listTable.size() > 0) {
+            for (WbsTree wbsTree : listTable) {
+                //判重
+                Integer r = baseMapper.selectRepeatByProjectId(pawDTO.getProjectId());
+                if (r <= 0) {
+                    //初始化wbs私有树元素表,每个项目只初始化一次
+                    Integer row = baseMapper.insertWbsTreePrivate(pawDTO.getProjectId(), wbsTree);
+                    if (row > 0) {
+                        logger.info(wbsTree.getId().toString(), "初始化项目私有wbs树元素表成功");
+                    }
+                }
+            }
+        }*/
         return true;
     }
 
-    private List<WbsTree> findAllNodeList(String wbsTreeIds) {
+    public List<WbsTree> findAllNodeList(String wbsTreeIds) {
         String[] ids = wbsTreeIds.split(",");
         List<Long> idList = new ArrayList<>();
         for (String id : ids) {
@@ -302,15 +338,18 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     }
 
     @Override
-    public WbsTreeContractVO findWbsTreeList() {
-        WbsTreeContractVO wbsTreeContractVO = new WbsTreeContractVO();
+    public WbsTreeAllListVO findWbsTreeList(Integer type) {
+        WbsTreeAllListVO wbsTreeAllListVO = new WbsTreeAllListVO();
         //查询Wbs总树
-        List<WbsInfo> wbsInfos = wbsInfoMapper.selectAll();
-        wbsTreeContractVO.setWbsInfos(wbsInfos);
-        //查询私有树
-        List<WbsTreeContractDTO> wbsTreeContracts = wbsTreeContractMapper.selectAll();
-        wbsTreeContractVO.setWbsTreeContracts(wbsTreeContracts);
-        return wbsTreeContractVO;
+        List<WbsInfo> wbsInfos = wbsInfoMapper.selectAll(type);
+        wbsTreeAllListVO.setWbsInfos(wbsInfos);
+        //查询项目私有树 TODO 默认type=1质检查询wbs总树+项目私有树 如果=2实验不需要wbs私有树可以加判断不查询
+        List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectAll();
+        wbsTreeAllListVO.setWbsTreePrivates(wbsTreePrivates);
+        //查询合同段私有树 TODO 暂时未说明是否要引用合同段私有树(已确认暂时不引用合同树)
+        /*List<WbsTreeContractVO> wbsTreeContractDTOS = wbsTreeContractMapper.selectAll();
+        wbsTreeAllListVO.setWbsTreeContracts(wbsTreeContractDTOS);*/
+        return wbsTreeAllListVO;
     }
 
     @Override
@@ -335,17 +374,17 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         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);

+ 31 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/wrapper/WbsTreePrivateWrapper.java

@@ -0,0 +1,31 @@
+package org.springblade.manager.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.manager.entity.WbsTreePrivate;
+import org.springblade.manager.vo.WbsTreePrivateVO;
+import java.util.Objects;
+
+/**
+ * 包装类,返回视图层所需的字段
+ *
+ * @author liuyc
+ * @since 2022-05-24
+ */
+public class WbsTreePrivateWrapper extends BaseEntityWrapper<WbsTreePrivate, WbsTreePrivateVO> {
+    public static WbsTreePrivateWrapper build() {
+        return new WbsTreePrivateWrapper();
+    }
+
+    @Override
+    public WbsTreePrivateVO entityVO(WbsTreePrivate wbsTree) {
+        WbsTreePrivateVO wbsTreePrivateVO = Objects.requireNonNull(BeanUtil.copy(wbsTree, WbsTreePrivateVO.class));
+
+        //User createUser = UserCache.getUser(wbsTree.getCreateUser());
+        //User updateUser = UserCache.getUser(wbsTree.getUpdateUser());
+        //wbsTreeVO.setCreateUserName(createUser.getName());
+        //wbsTreeVO.setUpdateUserName(updateUser.getName());
+
+        return wbsTreePrivateVO;
+    }
+}