Преглед изворни кода

项目、合同树BUG修复

liuyc пре 3 година
родитељ
комит
fdd729f448

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

@@ -67,7 +67,7 @@ public class ArchiveTree extends BaseEntity {
     /**
      * 岗位类型
      */
-    private Integer postType;
+    private String postType;
 
     /**
      * 关联类型

+ 5 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ArchiveTreeVO.java

@@ -92,5 +92,10 @@ public class ArchiveTreeVO extends ArchiveTree implements INode<ArchiveTreeVO> {
      */
     private Integer isStorageNode;
 
+    /**
+     * 是否为显示树
+     */
+    private Integer isUploadFileDisplayConfigurationTree;
+
 
 }

+ 14 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/TreeNodeVO2.java

@@ -40,6 +40,11 @@ public class TreeNodeVO2 extends BaseNode<TreeNode> {
      */
     private Integer isStorageNode;
 
+    /**
+     * 是否显示
+     */
+    private Integer isDisplayTree;
+
 
     public TreeNodeVO2() {
     }
@@ -60,6 +65,14 @@ public class TreeNodeVO2 extends BaseNode<TreeNode> {
         this.isStorageNode = isStorageNode;
     }
 
+    public Integer getIsDisplayTree() {
+        return isDisplayTree;
+    }
+
+    public void setIsDisplayTree(Integer isDisplayTree) {
+        this.isDisplayTree = isDisplayTree;
+    }
+
     public String getDisplayHierarchy() {
         return displayHierarchy;
     }
@@ -116,6 +129,7 @@ public class TreeNodeVO2 extends BaseNode<TreeNode> {
                 + ",majorDataType" + this.getMajorDataType()
                 + ",displayHierarchy" + this.getDisplayHierarchy()
                 + ",isStorageNode" + this.getIsStorageNode()
+                + ",isDisplayTree" + this.getIsDisplayTree()
                 + ", title=" + this.getTitle() + ", key=" + this.getKey() + ", value=" + this.getValue() + ")";
     }
 

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

@@ -126,7 +126,7 @@ public class ArchiveTreeController extends BladeController {
      */
     @GetMapping("/tree")
     @ApiOperationSupport(order = 7)
-    @ApiOperation(value = "全加载树形结构/显示树", notes = "传入租户id、token、或disPlayTree=1加载显示树、nodeType")
+    @ApiOperation(value = "全加载树形结构/显示树", notes = "token、或disPlayTree=1加载显示树、nodeType")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "token", value = "token", required = true),
             @ApiImplicitParam(name = "disPlayTree", value = "是否加载显示树 'null'=不加载 '1'=加载"),
@@ -149,7 +149,7 @@ public class ArchiveTreeController extends BladeController {
     @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "ids", value = "ids字符串拼接 ',' ", required = true)
     })
-    public R<List<ArchiveTreeVO>> submitDisplayConfigTree(@RequestBody String ids) {
+    public R<List<ArchiveTreeVO>> submitDisplayConfigTree(@RequestParam String ids) {
         return R.status(archiveTreeService.submitDisplayConfigTree(ids));
     }
 

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

@@ -39,4 +39,6 @@ public interface ArchiveTreeMapper extends BaseMapper<ArchiveTree> {
     int updateBatch(@Param("diffRent") List<String> diffRent);
 
     int updateBatch2(@Param("diffRent") List<String> diffRent);
+
+    int updateBatch3();
 }

+ 11 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeMapper.xml

@@ -39,6 +39,7 @@
         <result column="displayHierarchy" property="displayHierarchy"/>
         <result column="majorDataType" property="majorDataType"/>
         <result column="isStorageNode" property="isStorageNode"/>
+        <result column="isDisplayTree" property="isDisplayTree"/>
     </resultMap>
 
     <update id="updateBatch">
@@ -62,6 +63,14 @@
         AND is_deleted = 0
         AND status = 1
     </update>
+    <update id="updateBatch3">
+        UPDATE m_archive_tree
+        SET is_upload_file_display_configuration_tree = 0
+        WHERE
+        node_type = 2
+        AND is_deleted = 0
+        AND status = 1
+    </update>
 
     <select id="lazyTree" resultMap="treeNodeResultMap">
         SELECT
@@ -93,7 +102,8 @@
         id AS "value",
         id AS "key",
         major_data_type AS "majorDataType",
-        display_hierarchy AS "displayHierarchy"
+        display_hierarchy AS "displayHierarchy",
+        is_upload_file_display_configuration_tree AS "isDisplayTree"
         FROM m_archive_tree
         WHERE is_deleted = 0
         <if test=" tenantId!=null and tenantId!='' ">

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

@@ -26,7 +26,7 @@ public interface WbsTreeContractMapper extends BaseMapper<WbsTreeContract> {
                                    @Param("wbsTree") WbsTreePrivate wbsTree);
 
 
-    void deleteBatch(@Param("ids") ArrayList<Long> ids,
+    void deleteBatch(@Param("ids") List<Long> ids,
                      @Param("wbsId") String wbsId,
                      @Param("projectId") String projectId,
                      @Param("contractId") String contractId);

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

@@ -139,9 +139,9 @@ public interface WbsTreeMapper extends BaseMapper<WbsTree> {
 
     void alterTableFiled(String initTableName, String eKey, String eType, Integer eLength);
 
-    void deleteBatch(@Param("ids") ArrayList<Long> ids, @Param("wbsId") String wbsId, @Param("projectId") String projectId);
+    void deleteBatch(@Param("ids") List<Long> ids, @Param("wbsId") String wbsId, @Param("projectId") String projectId);
 
-    void deleteBatch2(@Param("ids") ArrayList<Long> ids, @Param("wbsId") String wbsId, @Param("projectId") String projectId);
+    void deleteBatch2(@Param("ids") List<Long> ids, @Param("wbsId") String wbsId, @Param("projectId") String projectId);
 
     void updateByParentId(Long parentId, Long id);
 

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

@@ -121,6 +121,11 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
 
     @Override
     public boolean submitDisplayConfigTree(String ids) {
+        if (StringUtils.isEmpty(ids)) {
+            //删除全部
+            baseMapper.updateBatch3();
+            return true;
+        }
         //获取当前已配置的显示树
         List<ArchiveTree> archiveTrees = baseMapper.selectList(Wrappers.<ArchiveTree>query().lambda()
                 .eq(ArchiveTree::getIsUploadFileDisplayConfigurationTree, 1));

+ 35 - 22
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -21,6 +21,7 @@ import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.mapper.WbsInfoMapper;
 import org.springblade.manager.mapper.WbsTreeContractMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
+import org.springblade.manager.service.IFormulaService;
 import org.springblade.manager.service.IWbsTreeContractService;
 import org.springblade.manager.vo.WbsTreeContractTreeVO;
 import org.springblade.manager.vo.WbsTreeContractTreeVO2;
@@ -57,37 +58,45 @@ public class WbsTreeContractServiceImpl
         String[] ids = wbsTreeIds.split(",");
         List<String> idList = Arrays.asList(ids);
         List<String> idList1 = idList.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
-        List<String> idList2 = new ArrayList<>();
+        //获取当前合同段wbs所有节点+表单
         List<WbsTreeContract> list = baseMapper.findAllNodeList2(pawDTO.getProjectId(), pawDTO.getContractId(), pawDTO.getWbsId());
+        List<String> collect1 = new ArrayList<>(); //当前合同段所有节点+表单Id
+        List<String> collect3 = new ArrayList<>(); //当前合同段所有节点下表单Id
+        List<String> collect7 = new ArrayList<>(); //当前合同段所有节点Id
         if (list.size() > 0) {
-            list.stream().forEach(wbsTreeContract -> {
-                idList2.add(String.valueOf(wbsTreeContract.getId()));
-            });
+            //所有节点+表单Id
+            List<Long> collect = list.stream().map(WbsTreeContract::getId).collect(Collectors.toList());
+            collect1 = collect.stream().map(String::valueOf).collect(Collectors.toList());
+            //节点下所有表单Id
+            List<WbsTreeContract> collect2 = list.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
+            List<Long> collect4 = collect2.stream().map(WbsTreeContract::getId).collect(Collectors.toList());
+            collect3 = collect4.stream().map(String::valueOf).collect(Collectors.toList());
+            //所有节点
+            List<WbsTreeContract> collect5 = list.stream().filter(f -> f.getType() == 1).collect(Collectors.toList());
+            List<Long> collect6 = collect5.stream().map(WbsTreeContract::getId).collect(Collectors.toList());
+            collect7 = collect6.stream().map(String::valueOf).collect(Collectors.toList());
         }
-        List<String> diffRent = getDiffrent(idList1, idList2);
+        List<String> diffRent = getDiffrent(idList1, collect7);
+        //同步元素表
         if (diffRent.size() == 0) {
-            WbsInfo wbsInfo = wbsInfoMapper.selectById(pawDTO.getWbsId());
-            Integer wbsType = wbsInfo.getWbsType();
-            //同步项目wbs树新增的元素表
-            List<String> idsList1 = new ArrayList<>();
             //获取私有wbs树下所有元素表
             List<WbsTreePrivate> wbsTreePrivateList = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                     .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
                     .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
                     .eq(WbsTreePrivate::getType, 2)
             );
-            wbsTreePrivateList.stream().forEach(id -> {
-                idsList1.add(String.valueOf(id.getId()));
-            });
-            //获取所有wbsTreePrivate新增的表单id
-            List<String> diffRent1 = getDiffrent(idsList1, idList2);
-            if (diffRent1.size() > 0) {
-                List<WbsTreeContract> wbsTreeContracts = new ArrayList<>();
+            //私有wbs树下所有元素表的Id collect2
+            List<Long> collect = wbsTreePrivateList.stream().map(WbsTreePrivate::getId).collect(Collectors.toList());
+            List<String> collect2 = collect.stream().map(String::valueOf).collect(Collectors.toList());
+            //获取所有wbsTreePrivate新增的表单Id
+            List<String> diffRent1 = getDiffrent(collect2, collect3);
+            if (collect2.size() > collect3.size()) {
                 //初始化
+                List<WbsTreeContract> wbsTreeContracts = new ArrayList<>();
                 wbsTreePrivateList.stream().forEach(wbsTreePrivate -> {
                     diffRent1.stream().forEach(id -> {
                         if (Long.parseLong(id) == (wbsTreePrivate.getId())) {
-                            WbsTreeContract wbsTreeContract = getWbsTreePrivate(wbsTreePrivate, pawDTO, wbsType);
+                            WbsTreeContract wbsTreeContract = getWbsTreePrivate(wbsTreePrivate, pawDTO, null);
                             wbsTreeContracts.add(wbsTreeContract);
                         }
                     });
@@ -95,13 +104,15 @@ public class WbsTreeContractServiceImpl
                 this.saveBatch(wbsTreeContracts, 10000);
             }
         } else {
-            if (idList1.size() > idList2.size()) {
+            //新增
+            if (idList1.size() > collect1.size()) {
                 List<WbsTreeContract> wbsTreeContractList = new ArrayList<>();
                 //获取wbs私有树下节点+表
                 List<WbsTreePrivate> wbsTreePrivateList = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                         .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
                         .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
                 );
+                List<WbsTreePrivate> wbsTreePrivateListTable = wbsTreePrivateList.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
                 List<WbsTreePrivate> listTree = new ArrayList<>();
                 wbsTreePrivateList.stream().map(tree -> {
                     diffRent.stream().forEach(id -> {
@@ -116,6 +127,11 @@ public class WbsTreeContractServiceImpl
                     WbsTreeContract wbsTreeContract = getWbsTreePrivate(wbsTreePrivate, pawDTO, null);
                     wbsTreeContractList.add(wbsTreeContract);
                 });
+                wbsTreePrivateListTable.stream().forEach(wbsTreePrivate -> {
+                    WbsTreeContract wbsTreeContract = getWbsTreePrivate(wbsTreePrivate, pawDTO, null);
+                    wbsTreeContractList.add(wbsTreeContract);
+                });
+                //新增
                 this.saveBatch(wbsTreeContractList, 10000);
                 //初始化施工台账
                 wbsTreeContractList.stream().forEach(wbsTreeContract -> {
@@ -131,10 +147,7 @@ public class WbsTreeContractServiceImpl
                 });
             } else {
                 //删除
-                ArrayList<Long> ids1 = new ArrayList<>();
-                diffRent.stream().forEach(id -> {
-                    ids1.add(Long.valueOf(id));
-                });
+                List<Long> ids1 = diffRent.stream().map(Long::parseLong).collect(Collectors.toList());
                 baseMapper.deleteBatch(ids1, pawDTO.getWbsId(), pawDTO.getProjectId(), pawDTO.getContractId());
             }
         }

+ 31 - 29
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -569,8 +569,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         List<String> diffRent = WbsTreeContractServiceImpl.getDiffrent(idList1, idList2);
         //元素表同步
         if (diffRent.size() == 0) {
-            List<String> tableId1 = new ArrayList<>();
-            List<String> tableId2 = new ArrayList<>();
             if (pawDTO.getReferenceType().equals("public")) {
                 //公有同步新增元素表
                 //获取公有wbs树新增的元素表
@@ -586,24 +584,22 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         wbsTreeListAll.addAll(wbsTreeList);
                     });
                 }
-                wbsTreeListAll.stream().forEach(wbsTree -> {
-                    tableId1.add(String.valueOf(wbsTree.getId()));
-                });
+                List<Long> collect1 = wbsTreeListAll.stream().map(WbsTree::getId).collect(Collectors.toList());
+                List<String> collect2 = collect1.stream().map(String::valueOf).collect(Collectors.toList());
                 //获取项目私有wbs树下当前所有的元素表
                 List<WbsTreePrivate> wbsTreePrivates1 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                         .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
                         .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
                         .eq(WbsTreePrivate::getType, 2)
                 );
-                wbsTreePrivates1.stream().forEach(wbsTreePrivate -> {
-                    tableId2.add(String.valueOf(wbsTreePrivate.getId()));
-                });
-                List<String> diffRent1 = WbsTreeContractServiceImpl.getDiffrent(tableId1, tableId2);
+                List<Long> collect3 = wbsTreePrivates1.stream().map(WbsTreePrivate::getId).collect(Collectors.toList());
+                List<String> collect4 = collect3.stream().map(String::valueOf).collect(Collectors.toList());
+                List<String> diffRent1 = WbsTreeContractServiceImpl.getDiffrent(collect2, collect4);
                 if (diffRent1.size() == 0) {
                     //当wbsTreeIds == "" 时 1.在第一次新增未选择wbs树时  2.同步新增的元素表时
                     throw new ServiceException("请选择需要关联的树或未检测到所对应新增的元素表");
                 } else {
-                    if (tableId1.size() > tableId2.size()) {
+                    if (collect2.size() > collect4.size()) {
                         //公有同步元素表
                         diffRent1.stream().forEach(tableId -> {
                             WbsTree wbsTree = wbsTreeMapper.selectById(tableId);
@@ -625,23 +621,21 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
                         .eq(WbsTreePrivate::getType, 2)
                 );
-                wbsTreePrivates.stream().forEach(wbsTreePrivate1 -> {
-                    tableId1.add(String.valueOf(wbsTreePrivate1.getId()));
-                });
+                List<Long> collect1 = wbsTreePrivates.stream().map(WbsTreePrivate::getId).collect(Collectors.toList());
+                List<String> collect2 = collect1.stream().map(String::valueOf).collect(Collectors.toList());
                 //获取当前项目私有wbs树下当前所有的元素表
                 List<WbsTreePrivate> wbsTreePrivates1 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                         .eq(WbsTreePrivate::getWbsId, pawDTO.getPrimaryKeyId())
                         .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
                         .eq(WbsTreePrivate::getType, 2)
                 );
-                wbsTreePrivates1.stream().forEach(wbsTreePrivate2 -> {
-                    tableId2.add(String.valueOf(wbsTreePrivate2.getId()));
-                });
-                List<String> diffRent1 = WbsTreeContractServiceImpl.getDiffrent(tableId1, tableId2);
+                List<Long> collect3 = wbsTreePrivates1.stream().map(WbsTreePrivate::getId).collect(Collectors.toList());
+                List<String> collect4 = collect3.stream().map(String::valueOf).collect(Collectors.toList());
+                List<String> diffRent1 = WbsTreeContractServiceImpl.getDiffrent(collect2, collect4);
                 if (diffRent1.size() == 0) {
                     throw new ServiceException("未检测到引用的私有wbs树下有新增的元素表");
                 } else {
-                    if (tableId1.size() > tableId2.size()) {
+                    if (collect2.size() > collect4.size()) {
                         //私有同步元素表
                         List<WbsTreePrivate> lists = new ArrayList<>();
                         diffRent1.stream().forEach(tableId -> {
@@ -674,6 +668,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     //公有
                     //查询所有公共节点+表单
                     List<WbsTree> trees = baseMapper.selectList(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getWbsId, pawDTO.getWbsId()));
+                    List<WbsTree> treesTable = trees.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
                     //根据id获取指定WbsTree节点数据
                     List<WbsTree> listTree = new ArrayList<>();
                     trees.stream().map(tree -> {
@@ -685,17 +680,25 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         return null;
                     }).collect(Collectors.toList());
                     //初始化
+                    //节点
                     listTree.stream().forEach(tree -> {
                         WbsTreePrivate wbsTreePrivate2 = getWbsTreePrivate1(tree, pawDTO);
                         insertData.add(wbsTreePrivate2);
                     });
+                    //元素表
+                    treesTable.stream().forEach(tree -> {
+                        WbsTreePrivate wbsTreePrivate2 = getWbsTreePrivate1(tree, pawDTO);
+                        insertData.add(wbsTreePrivate2);
+                    });
                 } else if (pawDTO.getReferenceType().equals("private")) {
                     //私有
-                    //查询所有私有节点+表单
+                    //查询所有私有节点
                     List<WbsTreePrivate> wbsTreePrivatesList = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                             .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
                             .eq(WbsTreePrivate::getProjectId, pawDTO.getReferencePrivateWbsProjectId())
                     );
+                    //表单
+                    List<WbsTreePrivate> wbsTreePrivatesListTable = wbsTreePrivatesList.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
                     List<WbsTreePrivate> listTree = new ArrayList<>();
                     wbsTreePrivatesList.stream().map(tree -> {
                         diffRent.stream().forEach(id -> {
@@ -706,10 +709,16 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         return null;
                     }).collect(Collectors.toList());
                     //初始化
+                    //节点
                     listTree.stream().forEach(wbsTreePrivate -> {
                         WbsTreePrivate wbsTreePrivate2 = getWbsTreePrivate2(wbsTreePrivate, pawDTO);
                         insertData2.add(wbsTreePrivate2);
                     });
+                    //元素表
+                    wbsTreePrivatesListTable.stream().forEach(wbsTreePrivate -> {
+                        WbsTreePrivate wbsTreePrivate2 = getWbsTreePrivate2(wbsTreePrivate, pawDTO);
+                        insertData2.add(wbsTreePrivate2);
+                    });
                 }
                 if (pawDTO.getReferenceType().equals("public")) {
                     wbsTreePrivateService.saveBatch(insertData, 10000);
@@ -721,17 +730,8 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             }
             //删除节点 表单
             else {
-                ArrayList<Long> ids1 = new ArrayList<>();
-                ArrayList<Long> ids2 = new ArrayList<>();
-                diffRent.stream().forEach(id -> {
-                    ids1.add(Long.valueOf(id));
-                });
-                if (deletedStatus == 1) {
-                    diffRent.stream().forEach(id -> {
-                        ids2.add(Long.valueOf(id));
-                    });
-                }
                 if (pawDTO.getReferenceType().equals("public")) {
+                    List<Long> ids1 = diffRent.stream().map(Long::parseLong).collect(Collectors.toList());
                     //判断是否被合同段引用
                     List<WbsTreeContract> wbsTreeContract = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
                             .eq(WbsTreeContract::getWbsId, pawDTO.getWbsId())
@@ -754,7 +754,9 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     }
                     baseMapper.deleteBatch(ids1, pawDTO.getWbsId(), pawDTO.getProjectId());
                     baseMapper.deleteBatch2(ids1, pawDTO.getWbsId(), pawDTO.getProjectId());
+
                 } else if (pawDTO.getReferenceType().equals("private")) {
+                    List<Long> ids2 = diffRent.stream().map(Long::parseLong).collect(Collectors.toList());
                     //判断是否被合同段引用
                     List<WbsTreeContract> wbsTreeContract = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
                             .eq(WbsTreeContract::getWbsId, pawDTO.getPrimaryKeyId())