소스 검색

质检新增子节点2

qianxb 1 년 전
부모
커밋
5fefaa0306

+ 34 - 2
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -2866,12 +2866,12 @@ public class InformationWriteQueryController extends BladeController {
                     throw new ServiceException("只能选择单节点进行新增操作");
                 }
                 //查询数据
-                selectedNodeList = this.unifiedCode(allSelectedNodeList, treeContract, "0", query);
+                selectedNodeList = this.unifiedCode2(allSelectedNodeList, treeContract, "0", query);
                 if (ObjectUtil.isEmpty(selectedNodeList)) {
                     return R.data(null);
                 }
                 //检查当前操作的节点是否是填报节点,如果是则需要查询相关联表格
-                List<Long> lowNodeIds = selectedNodeList.stream().filter(f -> f.getLow() == 0).map(WbsTreePrivateAddVO::getId).collect(Collectors.toList()); //最底层节点id
+                List<Long> lowNodeIds = selectedNodeList.stream().filter(f -> f.getLow() == 1).map(WbsTreePrivateAddVO::getId).collect(Collectors.toList()); //最底层节点id
                 List<WbsTreePrivateAddVO> childList = new ArrayList<>();
                 if (lowNodeIds.size() > 0) {
                     //只取原始表
@@ -3188,6 +3188,38 @@ public class InformationWriteQueryController extends BladeController {
         return null;
     }
 
+    private List<WbsTreePrivateAddVO> unifiedCode2
+            (List<AddContractTreeNodeVO.Node> allSelectedNodeList, WbsTreeContract treeContract, String
+                    saveType, List<WbsTreePrivate> queryResultP) {
+        //获取项目节点树的主键
+        List<Long> halfSelectedList = allSelectedNodeList.stream().map(AddContractTreeNodeVO.Node::getPrimaryKeyId).map(Long::parseLong).distinct().collect(Collectors.toList());
+
+        //获取项目对应的合同段的树原始节点的信息
+        List<WbsTreePrivateAddVO> query = jdbcTemplate.query("select *," +
+                        "(SELECT CASE WHEN count(1) > 0 THEN 1 ELSE 0 END FROM m_wbs_tree_private b WHERE b.parent_id = a.id" +
+                        " AND b.type = 2 and b.status = 1 AND b.is_deleted = 0 AND b.project_id = " + treeContract.getProjectId() +
+                        ") AS low " +
+                        " FROM m_wbs_tree_private a WHERE p_key_id IN (" + StringUtils.join(halfSelectedList, ",") + ")",
+                new BeanPropertyRowMapper<>(WbsTreePrivateAddVO.class));
+
+        if (query.size() > 0) {
+            //返回结果集,匹配节点名称使用
+            queryResultP.addAll(query);
+
+            //剔除与当前操作节点相同的ID,(如果saveType=1,表示当前及子级节点,那么就要剔除自己本身,否则视为仅当前节点操作,会存在自己本身)
+            if ("1".equals(saveType)) {
+                query.removeIf(wbsTreePrivate -> {
+                    Long id = wbsTreePrivate.getId();
+                    return treeContract.getId() != null && treeContract.getId().equals(id);
+                });
+            }
+
+            return query;
+        }
+
+        return null;
+    }
+
     @NotNull
     public R<Boolean> saveOrCopyNodeTree
             (List<WbsTreeContract> saveList, List<ConstructionLedger> saveLedger, Integer