瀏覽代碼

修改Wbs节点树BUG

liuyc 3 年之前
父節點
當前提交
6622063bee
共有 13 個文件被更改,包括 241 次插入93 次删除
  1. 19 4
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/WbsTreeContractDTO.java
  2. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ContractInfoController.java
  3. 2 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java
  4. 6 7
      blade-service/blade-manager/src/main/java/org/springblade/manager/excel/WbsTreeExcel.java
  5. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ProjectInfoMapper.java
  6. 2 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ProjectInfoMapper.xml
  7. 8 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java
  8. 32 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml
  9. 12 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java
  10. 55 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml
  11. 16 13
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  12. 53 18
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java
  13. 34 39
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

+ 19 - 4
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/WbsTreeContractDTO.java

@@ -31,10 +31,25 @@ public class WbsTreeContractDTO extends WbsTreeContract {
     private String wbsTreeIds;
 
     /**
-     * 引用其他项目私有WBS库的ID
+     * 引用类型
      */
-    @JsonProperty(value = "templateProjectId")
-    @ApiModelProperty(name = "templateProjectId", value = "如果引用的是其他WBS私有库,那么必传该引用的私有库的项目id", required = false)
-    private String templateProjectId;
+    @JsonProperty(value = "referenceType")
+    @ApiModelProperty(name = "referenceType", value = "引用类型 : public / private ", required = true)
+    private String referenceType;
+
+    /**
+     * 引用私有库项目id
+     */
+    @JsonProperty(value = "referencePrivateWbsProjectId")
+    @ApiModelProperty(name = "referencePrivateWbsProjectId", value = "引用的私有库项目id", required = true)
+    private String referencePrivateWbsProjectId;
+
+    /**
+     * 私有库的根节点primaryKeyId
+     */
+    @JsonProperty(value = "primaryKeyId")
+    @ApiModelProperty(name = "primaryKeyId", value = "私有库的根节点primaryKeyId", required = true)
+    private String primaryKeyId;
+
 
 }

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

@@ -184,7 +184,7 @@ public class ContractInfoController extends BladeController {
                                                 @RequestParam("id") String id) {
         List<CRolePostVO> list = contractInfoService.findJobByRoleId(id);
         if (list.size() <= 0) {
-            return R.fail("未查询到信息");
+            return R.data(list, "未查询到信息");
         }
         return R.data(list);
     }

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

@@ -40,7 +40,7 @@ public class WbsTreePrivateController extends BladeController {
     private final IWbsTreePrivateService wbsTreePrivateService;
 
     /**
-     * wbs私有库新增节点接口
+     * wbs私有库新增节点接口 同步合同段wbs库
      */
     @PostMapping("/submit")
     @ApiOperationSupport(order = 1)
@@ -49,8 +49,7 @@ public class WbsTreePrivateController extends BladeController {
         if (wbsTreePrivateService.submit(wbsTreePrivate)) {
             CacheUtil.clear(SYS_CACHE);
             // 返回懒加载树更新节点所需字段
-            Kv kv = Kv.create().set("id", String.valueOf(wbsTreePrivate.getId())).set("tenantId", wbsTreePrivate.getTenantId())
-                    .set("deptCategoryName", DictCache.getValue(DictEnum.ORG_CATEGORY, wbsTreePrivate.getDeptCategory()));
+            Kv kv = Kv.create().set("id", String.valueOf(wbsTreePrivate.getId()));
             return R.data(kv);
         }
         return R.fail("操作失败");

+ 6 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/excel/WbsTreeExcel.java

@@ -23,36 +23,35 @@ import java.io.Serializable;
 public class WbsTreeExcel implements Serializable {
     private static final long serialVersionUID = 1L;
     /**
-     * wbs库id
+     * 单位工程
      */
     @ExcelProperty(value = "单位工程")
     private String deptCategory1;
     /**
-     * 租户id
+     * 分部工程
      */
     @ExcelProperty(value = "分部工程")
     private String deptCategory2;
 
     /**
-     * 父主键
+     * 子分部工程
      */
     @ExcelProperty(value = "子分部工程")
     private String deptCategory3;
 
     /**
-     * '1'节点 '2'表单
+     * 分项工程
      */
     @ExcelProperty(value = "分项工程")
-    @ExcelIgnore
     private String deptCategory4;
 
     /**
-     * 部门名
+     * 子分项工程
      */
     @ExcelProperty(value = "子分项工程")
     private String deptCategory5;
     /**
-     * 部门全称
+     * 工序
      */
     @ExcelProperty(value = "工序")
     private String deptCategory6;

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

@@ -42,5 +42,5 @@ public interface ProjectInfoMapper extends BaseMapper<ProjectInfo> {
 	List<ProjectInfoVO> selectProjectInfoPage(IPage page, ProjectInfoVO projectInfo);
 
 
-    void updateTemplateIdById(String projectId, String wbsId);
+    void updateTemplateIdById(String projectId, String referencePrivateWbsProjectId);
 }

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

@@ -37,7 +37,8 @@
     </select>
 
     <update id="updateTemplateIdById">
-        UPDATE  m_project_info SET reference_wbs_template_id = #{wbsId} WHERE
+        UPDATE  m_project_info SET reference_wbs_template_id = #{referencePrivateWbsProjectId}
+        WHERE
         id = #{projectId}
         AND is_deleted = 0
         AND status = 1

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

@@ -45,4 +45,12 @@ public interface WbsTreeContractMapper extends BaseMapper<WbsTreeContract> {
                                        @Param("wbsId") String wbsId);
 
 
+    WbsTreePrivate selectParent(String projectId, String wbsId, Long parentId);
+
+    void updateByCondition1(@Param("wbsTP") WbsTreePrivate wbsTP);
+
+    void insertByCondition(@Param("wbsTree") WbsTreePrivate wbsTreePrivate,
+                           @Param("contractId") Long contractId,
+                           @Param("pKeyId") Long pKeyId,
+                           @Param("wbsType") Integer wbsType);
 }

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

@@ -58,6 +58,19 @@
             #{wbsTree.tableOwner},#{wbsTree.majorDataType},#{wbsTree.initTableName},#{wbsTree.isLinkTable})
     </insert>
 
+    <insert id="insertByCondition">
+            INSERT INTO m_wbs_tree_contract(
+            p_key_id,id,wbs_id,wbs_type,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,is_link_table)
+            VALUES(
+            #{pKeyId},#{wbsTree.id},#{wbsTree.wbsId},#{wbsType},#{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},#{wbsTree.isLinkTable})
+    </insert>
+
     <update id="deleteByCondition">
             UPDATE m_wbs_tree_contract
             SET is_deleted = 1
@@ -76,6 +89,19 @@
             AND contract_id = #{contractId}
     </update>
 
+    <update id="updateByCondition1">
+        UPDATE m_wbs_tree_contract
+        SET dept_category = #{wbsTP.deptCategory},
+            dept_name = #{wbsTP.deptName},
+            unique_code = #{wbsTP.uniqueCode},
+            partition_code = #{wbsTP.partitionCode},
+            major_data_type = #{wbsTP.majorDataType}
+        WHERE
+            project_id = #{wbsTP.projectId}
+        AND id = #{wbsTP.id}
+        AND wbs_id = #{wbsTP.wbsId}
+    </update>
+
 
     <select id="selectAll" resultMap="resultMap2">
         SELECT
@@ -133,6 +159,12 @@
         AND STATUS = 1
         AND is_deleted = 0
     </select>
+    <select id="selectParent" resultType="org.springblade.manager.entity.WbsTreePrivate">
+        SELECT dept_name FROM m_wbs_tree_private
+        WHERE id = #{parentId}
+        AND project_id = #{projectId}
+        AND wbs_id = #{wbsId}
+    </select>
 
 
 </mapper>

+ 12 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java

@@ -28,7 +28,8 @@ public interface WbsTreePrivateMapper extends BaseMapper<WbsTreePrivate> {
 
 
     WbsTreePrivate selectByCondition(@Param("id") String id,
-                                     @Param("projectId") String projectId);
+                                     @Param("wbsId") String wbsId,
+                                     @Param("getReferencePrivateWbsProjectId") String getReferencePrivateWbsProjectId);
 
     void deleteByCondition(String id, String wbsId, String projectId);
 
@@ -52,12 +53,20 @@ public interface WbsTreePrivateMapper extends BaseMapper<WbsTreePrivate> {
 
     WbsTreePrivate selectByCondition1(String id, String templateProjectId);
 
-    List<WbsTree> selectIsTable(Long tableParentId);
-
+    List<WbsTree> selectIsTable(Long tableId);
 
     List<WbsNodeTableVO> selectByNodeTable(String id, String wbsId, String projectId);
 
     int updateByCondition1(String id, String wbsId, String projectId);
 
     List<WbsTreePrivateVO> lazyTree(String wbsId, String tenantId, Long parentId, String projectId);
+
+    int updateByPKeyId(@Param("pKeyId") Long pKeyId, @Param("wbsTP") WbsTreePrivate wbsTP);
+
+    WbsTreePrivate getByCondition(Long parentId, String projectId);
+
+    WbsTreePrivate getByPKeyId(Long pKeyId);
+
+    WbsTreePrivate selectByCondition3(String id, String wbsId, String referencePrivateWbsProjectId);
+
 }

+ 55 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -51,6 +51,7 @@
         <result column="has_children" property="hasChildren"/>
         <result column="type" property="type"/>
         <result column="wbsType" property="wbsType"/>
+        <result column="primaryKeyId" property="primaryKeyId"/>
     </resultMap>
     <insert id="insertCombination1">
         INSERT INTO m_wbs_tree_private(
@@ -118,9 +119,30 @@
         AND project_id = #{projectId}
     </update>
 
+    <update id="updateByPKeyId">
+    update m_wbs_tree_private
+    set
+    tenant_id = #{wbsTP.tenantId},
+    parent_id = #{wbsTP.parentId},
+    dept_category = #{wbsTP.deptCategory},
+    dept_name = #{wbsTP.deptName},
+    ancestors = #{wbsTP.ancestors},
+    unique_code = #{wbsTP.uniqueCode},
+    partition_code = #{wbsTP.partitionCode},
+    major_data_type = #{wbsTP.majorDataType},
+    create_user = #{wbsTP.createUser},
+    create_dept = #{wbsTP.createDept},
+    create_time = #{wbsTP.createTime},
+    update_user = #{wbsTP.updateUser},
+    update_time = #{wbsTP.updateTime},
+    status = 1 ,is_deleted = 0
+    where p_key_id = #{pKeyId}
+    </update>
+
 
     <select id="lazyTree" resultMap="treeNodeResultMap">
         SELECT
+        dept.p_key_id as "primaryKeyId",
         dept.type AS "type",
         dept.table_type,
         dept.id,
@@ -168,7 +190,8 @@
     </select>
 
     <select id="tree" resultMap="treeNodeResultMap">
-        select id, parent_id, dept_name as title,type as "type", id as "value", id as "key" ,
+        select p_key_id as "primaryKeyId",
+        id, parent_id, dept_name as title,type as "type", id as "value", id as "key" ,
         (select wbs_type from m_wbs_info where id = #{wbsId}) as "wbsType"
         from m_wbs_tree_private
         where
@@ -190,9 +213,11 @@
             m_wbs_tree_private
         WHERE
             id = #{id}
-            AND project_id = #{projectId}
+            AND project_id = #{getReferencePrivateWbsProjectId}
+            AND wbs_id = #{wbsId}
             AND STATUS = 1
             AND is_deleted = 0
+            AND type = 1
     </select>
     <select id="selectByCondition2" resultType="org.springblade.manager.entity.WbsTreePrivate">
         SELECT
@@ -219,7 +244,7 @@
             type = 2
             AND is_deleted = 0
             AND `status` = 1
-            AND parent_id = #{tableParentId}
+            AND parent_id = #{tableId}
     </select>
     <select id="selectByNodeTable" resultType="org.springblade.manager.vo.WbsNodeTableVO">
         SELECT
@@ -239,5 +264,32 @@
         AND wt.wbs_id = #{wbsId}
         AND wt.project_id = #{projectId}
     </select>
+    <select id="getByCondition" resultType="org.springblade.manager.entity.WbsTreePrivate">
+        SELECT * FROM m_wbs_tree_private
+        WHERE project_id = #{projectId}
+        AND id = #{parentId}
+        AND is_deleted = 0
+        AND status = 1
+        AND type = 1
+    </select>
+    <select id="getByPKeyId" resultType="org.springblade.manager.entity.WbsTreePrivate">
+        SELECT * FROM m_wbs_tree_private
+        WHERE p_key_id = #{pKeyId}
+    </select>
+
+    <select id="selectByCondition3" resultType="org.springblade.manager.entity.WbsTreePrivate">
+        SELECT
+            *
+        FROM
+            m_wbs_tree_private
+        WHERE
+            id = #{id}
+            AND project_id = #{referencePrivateWbsProjectId}
+            AND wbs_id = #{wbsId}
+            AND STATUS = 1
+            AND is_deleted = 0
+            AND type = 1
+            AND parent_id = 0
+    </select>
 
 </mapper>

+ 16 - 13
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -37,9 +37,9 @@ public class WbsTreeContractServiceImpl
     @Transactional(rollbackFor = Exception.class)
     public String submitWbsTreeInContract(WbsTreeContractDTO pawDTO) {
         String wbsTreeIds = pawDTO.getWbsTreeIds();
-        if (StringUtils.isEmpty(wbsTreeIds)) {
+        /*if (StringUtils.isEmpty(wbsTreeIds)) {
             return "1";
-        }
+        }*/
         String[] ids = wbsTreeIds.split(",");
         List<String> idList1 = Arrays.asList(ids);
         List<String> idList2 = new ArrayList<>();
@@ -50,7 +50,6 @@ public class WbsTreeContractServiceImpl
         }
         //比较项目wbs私有树与合同段wbs树是否相同,相同则不修改,不同则修改
         List<String> diffrent = getDiffrent(idList1, idList2);
-        //diffrent.forEach(System.out::print);
         if (diffrent.size() == 0) {//相同
             return "2";
         } else {
@@ -63,18 +62,22 @@ public class WbsTreeContractServiceImpl
                         baseMapper.updateByCondition(id, pawDTO.getProjectId(), pawDTO.getContractId(), pawDTO.getWbsId());
                     } else {
                         //获取WbsTreePrivate对象
-                        WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectByCondition(id, pawDTO.getProjectId());
+                        WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectByCondition(id, pawDTO.getProjectId(), pawDTO.getWbsId());
                         Integer wbsType = wbsInfo.getWbsType();
                         Long snowId = SnowFlakeUtil.getId();
-                        baseMapper.insertWbsTreeContract1(snowId, wbsType, pawDTO.getContractId(), wbsTreePrivate);
-                        //初始化施工台账 TODO 此处会空指针未解决
-                        if (wbsTreePrivate.getDeptCategory() == 6
-                                && wbsTreePrivate.getDeptCategory() != null) {
-                            ConstructionLedger constructionLedger = new ConstructionLedger();
-                            constructionLedger.setIsBeton(0);
-                            constructionLedger.setWbsId(snowId);
-                            constructionLedger.setContractId(Long.parseLong(pawDTO.getContractId()));
-                            constructionLedgerFeign.initConstructionLedger(constructionLedger);
+                        if (wbsTreePrivate != null) {
+                            baseMapper.insertWbsTreeContract1(snowId, wbsType, pawDTO.getContractId(), wbsTreePrivate);
+                            WbsTreePrivate wbsTreePrivateParent = baseMapper.selectParent(wbsTreePrivate.getProjectId(), wbsTreePrivate.getWbsId(), wbsTreePrivate.getParentId());
+                            //初始化施工台账
+                            if (wbsTreePrivate.getDeptCategory() == 6) {
+                                ConstructionLedger constructionLedger = new ConstructionLedger();
+                                constructionLedger.setIsBeton(0);
+                                constructionLedger.setWbsId(snowId);
+                                constructionLedger.setSite(wbsTreePrivate.getDeptName());
+                                constructionLedger.setStation(wbsTreePrivateParent.getDeptName());
+                                constructionLedger.setContractId(Long.parseLong(pawDTO.getContractId()));
+                                constructionLedgerFeign.initConstructionLedger(constructionLedger);
+                            }
                         }
                     }
                 }

+ 53 - 18
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -3,6 +3,8 @@ 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.common.utils.SnowFlakeUtil;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -10,14 +12,20 @@ import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringPool;
+import org.springblade.manager.entity.ContractInfo;
+import org.springblade.manager.entity.WbsInfo;
 import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.entity.WbsTreePrivate;
 
+import org.springblade.manager.mapper.ContractInfoMapper;
+import org.springblade.manager.mapper.WbsInfoMapper;
+import org.springblade.manager.mapper.WbsTreeContractMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
 import org.springblade.manager.service.IWbsTreePrivateService;
 import org.springblade.manager.vo.WbsNodeTableVO;
 import org.springblade.manager.vo.WbsTreePrivateVO;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -25,30 +33,57 @@ import java.util.List;
 @Service
 @AllArgsConstructor
 public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMapper, WbsTreePrivate> implements IWbsTreePrivateService {
+
+    private final WbsTreeContractMapper wbsTreeContractMapper;
+    private final ContractInfoMapper contractInfoMapper;
+    private final WbsInfoMapper wbsInfoMapper;
+
     @Override
     public List<WbsTreePrivateVO> tree(String wbsId, String projectId) {
         return ForestNodeMerger.merge(baseMapper.tree(wbsId, projectId));
     }
 
     @Override
-    public boolean submit(WbsTreePrivate dept) {
-        if (Func.isEmpty(dept.getParentId())) {
-            dept.setTenantId(AuthUtil.getTenantId());
-            dept.setParentId(BladeConstant.TOP_PARENT_ID);
-            dept.setAncestors(String.valueOf(BladeConstant.TOP_PARENT_ID));
-        }
-        if (dept.getParentId() > 0) {
-            WbsTreePrivate parent = getById(dept.getParentId());
-            if (Func.toLong(dept.getParentId()) == Func.toLong(dept.getId())) {
-                throw new ServiceException("父节点不可选择自身!");
+    @Transactional(rollbackFor = Exception.class)
+    public boolean submit(WbsTreePrivate wbsTreePrivate) {
+        if (wbsTreePrivate.getPKeyId() != null && !("").equals(wbsTreePrivate.getPKeyId())) {
+            Long pKeyId = wbsTreePrivate.getPKeyId();
+            //修改
+            int row = baseMapper.updateByPKeyId(pKeyId, wbsTreePrivate);
+            if (row > 0) {
+                WbsTreePrivate wbsTreePrivate1 = baseMapper.getByPKeyId(pKeyId);
+                //同步合同段wbs库
+                wbsTreeContractMapper.updateByCondition1(wbsTreePrivate1);
+                return true;
+            }
+        } else {
+            wbsTreePrivate.setIsDeleted(0);
+            wbsTreePrivate.setStatus(1);
+            Long pKeyId = SnowFlakeUtil.getId();
+            wbsTreePrivate.setPKeyId(pKeyId);
+            WbsTreePrivate parent = baseMapper.getByCondition(wbsTreePrivate.getParentId(), wbsTreePrivate.getProjectId());
+            if (parent != null) {
+                String ancestors = parent.getAncestors() + "," + wbsTreePrivate.getParentId();
+                wbsTreePrivate.setAncestors(ancestors);
+            }
+            //新增
+            int row = baseMapper.insert(wbsTreePrivate);
+            if (row > 0) {
+                //获取当前项目下所有合同段id
+                QueryWrapper<ContractInfo> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("p_id", wbsTreePrivate.getProjectId());
+                List<ContractInfo> contractInfos = contractInfoMapper.selectList(queryWrapper);
+                WbsInfo wbsInfo = wbsInfoMapper.selectById(wbsTreePrivate.getWbsId());
+                Integer wbsType = wbsInfo.getWbsType();
+                for (ContractInfo contractInfo : contractInfos) {
+                    //同步新增合同段wbs库
+                    Long pKeyId1 = SnowFlakeUtil.getId();
+                    wbsTreeContractMapper.insertByCondition(wbsTreePrivate, contractInfo.getId(), pKeyId1, wbsType);
+                }
+                return true;
             }
-            dept.setTenantId(parent.getTenantId());
-            String ancestors = parent.getAncestors() + StringPool.COMMA + dept.getParentId();
-            dept.setAncestors(ancestors);
         }
-        dept.setStatus(1);
-        dept.setIsDeleted(BladeConstant.DB_NOT_DELETED);
-        return saveOrUpdate(dept);
+        return false;
     }
 
     @Override
@@ -76,13 +111,13 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     }
 
 
-    public List<WbsTreePrivate> findAllNodeList(String wbsTreeIds, String projectId) {
+    public List<WbsTreePrivate> findAllNodeList(String wbsTreeIds, String projectId, String wbsId) {
         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);
+            WbsTreePrivate wbsTreePrivate = baseMapper.selectByCondition(id, projectId, wbsId);
             list.add(wbsTreePrivate);
         }
         return list;

+ 34 - 39
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -277,9 +277,9 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     @Transactional(rollbackFor = Exception.class)
     public String submitWbsTreeInProject(WbsTreeContractDTO pawDTO) {
         String wbsTreeIds = pawDTO.getWbsTreeIds();
-        if (StringUtils.isEmpty(wbsTreeIds)) {
+        /*if (StringUtils.isEmpty(wbsTreeIds)) {
             return "1";
-        }
+        }*/
         String[] ids = wbsTreeIds.split(",");
         List<String> idList1 = Arrays.asList(ids);
         List<String> idList2 = new ArrayList<>();
@@ -293,7 +293,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             idList2.add(String.valueOf(wbsTreePrivate.getId()));
         }
         List<String> diffrent = WbsTreeContractServiceImpl.getDiffrent(idList1, idList2);
-        diffrent.forEach(System.out::print);
         if (diffrent.size() == 0) {
             List<String> tableId1 = new ArrayList<>();
             List<String> tableId2 = new ArrayList<>();
@@ -301,7 +300,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             List<WbsTree> allNodeList = findAllNodeList(wbsTreeIds);
             List<WbsTree> wbsTreeListAll = new ArrayList<>();
             for (WbsTree wbsTree : allNodeList) {
-                System.out.println("wbsTree.getId" + wbsTree.getId());
                 QueryWrapper<WbsTree> queryWrapper1 = new QueryWrapper<>();
                 queryWrapper1.eq("wbs_id", pawDTO.getWbsId());
                 queryWrapper1.eq("type", 2);
@@ -347,41 +345,42 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         //修改该节点下元素表
                         wbsTreePrivateMapper.updateTableByCondition(id, pawDTO.getProjectId(), pawDTO.getWbsId());
                     } else {
-                        //引用WBS公共库节点
-                        WbsTree wbsTree = wbsTreeMapper.selectById(id);
-                        if (wbsTree != null) {
-                            Long snowId = SnowFlakeUtil.getId();
-                            wbsTreePrivateMapper.insertCombination1(snowId, wbsTree, pawDTO.getProjectId());
-                            //查询该节点下是否有元素表
-                            Long tableParentId = wbsTree.getId();
-                            List<WbsTree> wbsTreeTableList = wbsTreeMapper.selectIsTable(tableParentId);
-                            if (wbsTreeTableList.size() > 0) {
-                                //新增元素表
-                                for (WbsTree tree : wbsTreeTableList) {
-                                    //判重
-                                    QueryWrapper<WbsTreePrivate> queryWrapper1 = new QueryWrapper<>();
-                                    queryWrapper1.eq("id", tree.getId());
-                                    queryWrapper1.eq("wbs_id", pawDTO.getWbsId());
-                                    queryWrapper1.eq("project_id", pawDTO.getProjectId());
-                                    WbsTreePrivate wbsTreePrivates1 = wbsTreePrivateMapper.selectOne(queryWrapper1);
-                                    if (wbsTreePrivates1 == null) {
-                                        Long snowId1 = SnowFlakeUtil.getId();
-                                        wbsTreePrivateMapper.insertCombination1(snowId1, tree, pawDTO.getProjectId());
+                        //引用WBS公共库
+                        if (pawDTO.getReferenceType().equals("public")) {
+                            WbsTree wbsTree = wbsTreeMapper.selectById(id);
+                            if (wbsTree != null) {
+                                Long snowId = SnowFlakeUtil.getId();
+                                wbsTreePrivateMapper.insertCombination1(snowId, wbsTree, pawDTO.getProjectId());
+                                //查询该节点下是否有元素表
+                                Long tableParentId = wbsTree.getId();
+                                List<WbsTree> wbsTreeTableList = wbsTreeMapper.selectIsTable(tableParentId);
+                                if (wbsTreeTableList.size() > 0) {
+                                    //新增元素表
+                                    for (WbsTree tree : wbsTreeTableList) {
+                                        //判重
+                                        QueryWrapper<WbsTreePrivate> queryWrapper1 = new QueryWrapper<>();
+                                        queryWrapper1.eq("id", tree.getId());
+                                        queryWrapper1.eq("wbs_id", pawDTO.getWbsId());
+                                        queryWrapper1.eq("project_id", pawDTO.getProjectId());
+                                        WbsTreePrivate wbsTreePrivates1 = wbsTreePrivateMapper.selectOne(queryWrapper1);
+                                        if (wbsTreePrivates1 == null) {
+                                            Long snowId1 = SnowFlakeUtil.getId();
+                                            wbsTreePrivateMapper.insertCombination1(snowId1, tree, pawDTO.getProjectId());
+                                        }
                                     }
                                 }
+                                //保存引用模板id
+                                projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getWbsId());
                             }
-                            //保存引用模板id
-                            projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getWbsId());
-                            pawDTO.setTemplateProjectId(pawDTO.getWbsId());
-                        }
-                        //引用项目WBS私有库节点
-                        WbsTreePrivate wbsTreePrivate1 = wbsTreePrivateMapper.selectByCondition(id, pawDTO.getTemplateProjectId());
-                        if (wbsTreePrivate1 != null) {
+                        } else if (pawDTO.getReferenceType().equals("private")) {
+                            //引用项目WBS私有库 通过referencePrivateWbsProjectId 查询引用的私有库
+                            WbsTreePrivate wbsTreePrivate1 = wbsTreePrivateMapper.selectByCondition(id, pawDTO.getWbsId(), pawDTO.getReferencePrivateWbsProjectId());
+                            //引用的私有库根节点primaryKeyId,赋值给新增的私有树wbsId字段
+//                            String wbsId = String.valueOf(pawDTO.getPrimaryKeyId());
                             Long snowId = SnowFlakeUtil.getId();
-                            wbsTreePrivateMapper.insertCombination2(snowId, wbsTreePrivate1, pawDTO.getProjectId());
+                            wbsTreePrivateMapper.insertCombination2(snowId, wbsTreePrivate1, pawDTO.getProjectId());  //pawDTO.getProjectId() 为当前项目id
                             //查询该节点下是否有元素表
-                            Long tableParentId = wbsTreePrivate1.getId();
-                            List<WbsTree> wbsTreeTableList = wbsTreePrivateMapper.selectIsTable(tableParentId);
+                            List<WbsTree> wbsTreeTableList = wbsTreePrivateMapper.selectIsTable(wbsTreePrivate1.getId());
                             if (wbsTreeTableList.size() > 0) {
                                 for (WbsTree tree : wbsTreeTableList) {
                                     //判重
@@ -394,15 +393,11 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                                         Long snowId1 = SnowFlakeUtil.getId();
                                         wbsTreePrivateMapper.insertCombination1(snowId1, tree, pawDTO.getProjectId());
                                     }
-                                    Long snowId2 = SnowFlakeUtil.getId();
-                                    wbsTreePrivateMapper.insertCombination1(snowId2, tree, pawDTO.getProjectId());
                                 }
                             }
                             //保存引用模板id
-                            projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getTemplateProjectId());
-                            pawDTO.setTemplateProjectId(pawDTO.getTemplateProjectId());
+                            projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getWbsId());
                         }
-
                     }
                 }
             } else {