Prechádzať zdrojové kódy

Merge branch 'master' of http://47.110.251.215:3000/java_org/bladex

huangtf 2 rokov pred
rodič
commit
204785462a

+ 5 - 3
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -236,6 +236,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	@Override
 	public void splitArchvies(Long projectId){
 		baseMapper.splitArchvies(projectId);
+		//TODO 清除案卷封面等pdf
+		//TODO 清除文件页面pdf
 	}
 
 	@Override
@@ -397,7 +399,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		if(StringUtils.isEmpty(treeCode)){
 			treeCode="owner";
 		}
-		String fileNumberPrefix=node.getFileNumberPrefix(); //档号前缀在节点设置
+		//String fileNumberPrefix=node.getFileNumberPrefix(); //档号前缀在节点设置
 		Integer fileNumberSuffix = null;//档号后缀按立卷单位生成流水号
 		if(indexMap.containsKey(treeCode)){
 			fileNumberSuffix = indexMap.get(treeCode);
@@ -407,7 +409,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			indexMap.put(treeCode,fileNumberSuffix+1);
 		}
 
-		archivesAuto.setFileNumber(fileNumberPrefix+fileNumberSuffix);//档号
+		archivesAuto.setFileNumber(fileNumberSuffix.toString());//档号
 		//archivesAuto.setMicron();//微缩号
 		archivesAuto.setUnit(unit);//立卷单位
 		//archivesAuto.setQuantity();//数量/单位
@@ -487,7 +489,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		//TODO wbs节点
 		//不存在跨节点 项目名称+案卷题名规则(在后台归档目录树设置的)+后缀
 		//存在跨节点  获取当前所有节点的父级节点题名规则+所有同层级跨节点并卷的节点名称拼接+后缀
-		return archiveName;
+		return archiveName+node.getArchiveNameSuffix();
 	}
 	private String builtFilePageNo(ArchivesAuto archivesAuto,List<ArchiveFile> waitArchiveFiles){
 		//生成文件对应的页码,返回url

+ 62 - 44
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java

@@ -286,7 +286,7 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
             }
 
             //修改数据
-            oldData.setPdfUrl("");
+//            oldData.setPdfUrl("");
             this.baseMapper.updateById(oldData);
 
         } else {
@@ -575,52 +575,70 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
                 return page;
 
             } else if (voResult.size() > 1) {
-                /**
-                 * @Author liuYC
-                 * @Date 2023年5月5日11:53:57
-                 * @Description
-                 *   处理资料查询,page资料填报数据与节点顺序同步展示问题,查询出当前选择节点下所有资料填报信息,
-                 *   然后匹配节点位置信息,不分页查询page数据,分页查询会导致数据匹配异常,处理完匹配后,再分页返回。
-                 */
-                //获取选择的节点下的所有子节点信息
-                WbsTreeContract oldSelectedNode = BeanUtil.copyProperties(node, WbsTreeContract.class);
-                List<WbsTreeContract> treeAll = this.getChildNodesZL(oldSelectedNode);
-                if (treeAll == null) {
-                    treeAll = new ArrayList<>();
-                }
-                treeAll.add(0, oldSelectedNode); //添加当前选择的节点为根节点
-
-                if (treeAll.size() > 1) {
-                    LinkedList<InformationQueryVO> resultData = new LinkedList<>();
-                    //将当前页数据中符合条件的记录都添加到结果列表中
-                    LinkedHashMap<Long, InformationQueryVO> dataMaps = voResult.stream()
-                            .collect(Collectors.toMap(InformationQueryVO::getWbsId, Function.identity(),
-                                    (oldValue, newValue) -> oldValue, LinkedHashMap::new));
-                    for (WbsTreeContract resultNode : treeAll) {
-                        InformationQueryVO queryVO = dataMaps.get(resultNode.getPKeyId());
-                        if (queryVO != null) {
-                            //按节点顺序插入
-                            resultData.add(queryVO);
-                        }
+                if (StringUtils.isNotEmpty(vo.getIsFirst())) {
+                    long current = (page.getCurrent() - 1) * page.getSize();
+                    if (current < 0) {
+                        throw new IllegalArgumentException("当前页码不能小于0");
+                    }
+                    //分页
+                    int currentNow = (int) (current / page.getSize() + 1); //当前页码
+                    int pageSize = (int) page.getSize(); //每页大小
+                    //计算起始位置和结束位置
+                    int fromIndex = (currentNow - 1) * pageSize;
+                    int toIndex = Math.min(currentNow * pageSize, voResult.size());
+                    List<InformationQueryVO> subList = voResult.subList(fromIndex, toIndex);
+                    page.setRecords(subList);
+                    page.setTotal(voResult.size());
+                    return page;
+                } else {
+
+                    /**
+                     * @Author liuYC
+                     * @Date 2023年5月5日11:53:57
+                     * @Description
+                     *   处理资料查询,page资料填报数据与节点顺序同步展示问题,查询出当前选择节点下所有资料填报信息,
+                     *   然后匹配节点位置信息,不分页查询page数据,分页查询会导致数据匹配异常,处理完匹配后,再分页返回。
+                     */
+                    //获取选择的节点下的所有子节点信息
+                    WbsTreeContract oldSelectedNode = BeanUtil.copyProperties(node, WbsTreeContract.class);
+                    List<WbsTreeContract> treeAll = this.getChildNodesZL(oldSelectedNode);
+                    if (treeAll == null) {
+                        treeAll = new ArrayList<>();
                     }
-                    if (resultData.size() > 0) {
-                        long current = (page.getCurrent() - 1) * page.getSize();
-                        if (current < 0) {
-                            throw new IllegalArgumentException("当前页码不能小于0");
+                    treeAll.add(0, oldSelectedNode); //添加当前选择的节点为根节点
+
+                    if (treeAll.size() > 1) {
+                        LinkedList<InformationQueryVO> resultData = new LinkedList<>();
+                        //将当前页数据中符合条件的记录都添加到结果列表中
+                        LinkedHashMap<Long, InformationQueryVO> dataMaps = voResult.stream()
+                                .collect(Collectors.toMap(InformationQueryVO::getWbsId, Function.identity(),
+                                        (oldValue, newValue) -> oldValue, LinkedHashMap::new));
+                        for (WbsTreeContract resultNode : treeAll) {
+                            InformationQueryVO queryVO = dataMaps.get(resultNode.getPKeyId());
+                            if (queryVO != null) {
+                                //按节点顺序插入
+                                resultData.add(queryVO);
+                            }
                         }
-                        //分页
-                        int currentNow = (int) (current / page.getSize() + 1); //当前页码
-                        int pageSize = (int) page.getSize(); //每页大小
-                        //计算起始位置和结束位置
-                        int fromIndex = (currentNow - 1) * pageSize;
-                        int toIndex = Math.min(currentNow * pageSize, resultData.size());
-                        List<InformationQueryVO> subList = resultData.subList(fromIndex, toIndex);
-                        page.setRecords(subList);
-                        page.setTotal(resultData.size());
-                        return page;
+                        if (resultData.size() > 0) {
+                            long current = (page.getCurrent() - 1) * page.getSize();
+                            if (current < 0) {
+                                throw new IllegalArgumentException("当前页码不能小于0");
+                            }
+                            //分页
+                            int currentNow = (int) (current / page.getSize() + 1); //当前页码
+                            int pageSize = (int) page.getSize(); //每页大小
+                            //计算起始位置和结束位置
+                            int fromIndex = (currentNow - 1) * pageSize;
+                            int toIndex = Math.min(currentNow * pageSize, resultData.size());
+                            List<InformationQueryVO> subList = resultData.subList(fromIndex, toIndex);
+                            page.setRecords(subList);
+                            page.setTotal(resultData.size());
+                            return page;
 
-                    } else {
-                        return page.setRecords(null);
+                        } else {
+                            return page.setRecords(null);
+                        }
                     }
                 }
             }

+ 48 - 11
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSelfInspectionRecordServiceImpl.java

@@ -424,7 +424,8 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
 
         List<TrialSelfInspectionRecord> bg = recordList.stream().filter(f -> ObjectUtils.isNotEmpty(f.getReportNo()) && f.getReportNo().contains("BG-")).collect(Collectors.toList());
         List<TrialSelfInspectionRecord> jl = recordList.stream().filter(f -> ObjectUtils.isNotEmpty(f.getRecordNo()) && f.getRecordNo().contains("JL-")).collect(Collectors.toList());
-
+        String maxRecordNo = "";
+        String maxReportNo = "";
         if (jl.size() > 0) {
             List<String> numberRecordNos = new ArrayList<>();
             for (String recordNo : jl.stream().map(TrialSelfInspectionRecord::getRecordNo).collect(Collectors.toList())) {
@@ -433,11 +434,15 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
             }
             int maxRecordNo1 = Integer.parseInt(Collections.max(numberRecordNos)) + 1;
             if (maxRecordNo1 < 9999 && maxRecordNo1 > 0) {
-                String recordNo = dto.getRecordNo();
-                String substring = recordNo.substring(recordNo.length() - 4);
-                String s = spUtils.buildSerial(maxRecordNo1, 4);
-                String replace = recordNo.replace(substring, s);
-                dto.setRecordNo(replace);
+                if (ObjectUtil.isEmpty(dto.getRecordNo())) {
+                    maxRecordNo = "0001";
+                } else {
+                    String recordNo = dto.getRecordNo();
+                    String substring = recordNo.substring(recordNo.length() - 4);
+                    String s = spUtils.buildSerial(maxRecordNo1, 4);
+                    String replace = recordNo.replace(substring, s);
+                    dto.setRecordNo(replace);
+                }
             } else {
                 throw new ServiceException("当前编号已达到最大值9999,操作失败");
             }
@@ -450,15 +455,47 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
             }
             int maxReportNo1 = Integer.parseInt(Collections.max(numberReportNos)) + 1;
             if (maxReportNo1 < 9999 && maxReportNo1 > 0) {
-                String reportNo = dto.getReportNo();
-                String substring = reportNo.substring(reportNo.length() - 4);
-                String s = spUtils.buildSerial(maxReportNo1, 4);
-                String replace = reportNo.replace(substring, s);
-                dto.setReportNo(replace);
+                if (ObjectUtil.isEmpty(dto.getReportNo())) {
+                    maxReportNo = "0001";
+                } else {
+                    String reportNo = dto.getReportNo();
+                    String substring = reportNo.substring(reportNo.length() - 4);
+                    String s = spUtils.buildSerial(maxReportNo1, 4);
+                    String replace = reportNo.replace(substring, s);
+                    dto.setReportNo(replace);
+                }
             } else {
                 throw new ServiceException("当前编号已达到最大值9999,操作失败");
             }
         }
+
+        List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateClient.queryByPKeyIds(Func.toStrList(String.valueOf(dto.getNodeId())));
+        WbsTreePrivate wbsTreePrivate = wbsTreePrivates.stream().findAny().orElse(null);
+        ContractInfo contract = contractClient.getContractById(dto.getContractId());
+        int year = LocalDateTimeUtil.now().getYear();
+        if (wbsTreePrivate == null) {
+            throw new ServiceException("未找到当前节点信息,操作失败!");
+        } else {
+            //记录表
+            if (StringUtils.isNotEmpty(maxRecordNo)) {
+                String str1 = "JL" +
+                        "-" + contract.getContractNumber() +
+                        "-" + year +
+                        "-" + spUtils.getStringSP(wbsTreePrivate.getNodeName().trim()) +
+                        "-" + maxRecordNo;
+                dto.setRecordNo(str1);
+            }
+
+            //报告单
+            if (StringUtils.isNotEmpty(maxReportNo)) {
+                String str2 = "BG" +
+                        "-" + contract.getContractNumber() +
+                        "-" + year +
+                        "-" + spUtils.getStringSP(wbsTreePrivate.getNodeName().trim()) +
+                        "-" + maxReportNo;
+                dto.setReportNo(str2);
+            }
+        }
     }
 
     @Override

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

@@ -302,7 +302,8 @@ public class ExcelTabController extends BladeController {
         Worksheet sheet = wb.getWorksheets().get(0);
         sheet.saveToHtml(thmlUrl, options);
 
-        detail.setExtension(bladeFile1.getOriginalName());
+//        detail.setExtension(bladeFile1.getOriginalName());
+        detail.setExtension(file.getOriginalFilename());
         detail.setFileUrl(bladeFile1.getLink());
         detail.setFileType(3); // 表示为清表信息  1 表示祖节点  2 表示为节点信息 3 表示清表
         detail.setHtmlUrl(thmlUrl);
@@ -1737,7 +1738,8 @@ public class ExcelTabController extends BladeController {
         // 上传excel文件
         R<BladeFile> bladeFile = iossClient.addFileInfo(file);
         BladeFile bladeFile1 = bladeFile.getData();
-        detail.setTemplateExtension(bladeFile1.getOriginalName());
+//        detail.setTemplateExtension(bladeFile1.getOriginalName());
+        detail.setTemplateExtension(file.getOriginalFilename());
         detail.setTemplateFileUrl(bladeFile1.getLink());
         excelTabService.saveOrUpdate(detail);
         return R.success("上传成功");

+ 0 - 10
blade-service/blade-manager/src/main/java/org/springblade/manager/excel/WbsExcelBatchUtil.java

@@ -10,20 +10,10 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springblade.core.log.exception.ServiceException;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.sql.rowset.serial.SerialException;
 import java.io.*;
 import java.util.*;
 
 public class WbsExcelBatchUtil {
-    /*public static void main(String[] args) throws IOException, ClassNotFoundException {
-        WbsExcelBatchUtil excelUtil = new WbsExcelBatchUtil();
-        //读取excel数据
-        ArrayList<Map<String, String>> result = excelUtil.readExcelToObj("C:\\Users\\泓创开发\\Desktop\\隧道总体.xls");
-        List<Map<String, String>> list1 = deepCopy(result);
-        System.out.println(list1);
-        List<Map<String, String>> list = removeRepeatMapByKey(result, "表名");
-    }*/
-
 
     /**
      * 深拷贝

+ 9 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/excel/WbsExcelUtil.java

@@ -13,6 +13,15 @@ import java.util.*;
 
 public class WbsExcelUtil {
 
+    /*public static void main(String[] args) throws IOException {
+        WbsExcelUtil excelUtil = new WbsExcelUtil();
+        //读取excel数据
+        ArrayList<Map<String, String>> dataList = excelUtil.readExcelToObj("C:\\Users\\泓创开发\\Desktop\\excel节点模板\\隧道工程2.xlsx");
+        for (Map<String, String> stringStringMap : dataList) {
+            System.out.println(stringStringMap);
+        }
+    }*/
+
     /**
      * 读取excel数据
      *

+ 37 - 36
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -702,51 +702,52 @@
 
     <select id="selectWbsTreeTrialTabList" resultType="org.springblade.manager.vo.WbsTreePrivateVO4">
         SELECT
-        p_key_id,
-        node_name,
-        node_type,
-        is_link_table,
-        is_tab_pdf,
-        is_buss_show,
-        tab_file_type,
-        wbs_id,
-        wbs_type,
-        html_url,
-        excel_id,
-        project_id,
-        type,
-        case when table_type = 9 then 1
-        when table_type = 10 then 2
-        end as tableType,
-        table_owner,
-        init_table_name,
-        init_table_id,
-        fill_rate,
-        pdf_url,
-        sort,
-        create_time,
-        (CASE WHEN locate('__',node_name) > 0 THEN 1 ELSE 0 END) AS isCopyTab
+            p_key_id,
+            node_name,
+            node_type,
+            case when table_type in(1,9) then 1
+                 when table_type in(2,10) then 2
+                 else table_type
+                 end as tableType,
+            table_owner,
+            is_link_table,
+            is_tab_pdf,
+            is_buss_show,
+            tab_file_type,
+            wbs_id,
+            wbs_type,
+            html_url,
+            excel_id,
+            project_id,
+            type,
+            init_table_name,
+            init_table_id,
+            fill_rate,
+            pdf_url,
+            sort,
+            create_time,
+            (CASE WHEN locate('__',node_name) > 0 THEN 1 ELSE 0 END) AS isCopyTab
         FROM
-        m_wbs_tree_private
+            m_wbs_tree_private
         WHERE project_id = #{projectId}
-        AND wbs_id = #{wbsId}
-        AND parent_id = #{parentId}
-        AND table_type = #{tableType}
-        AND type = 2
-        AND status = 1
-        AND is_deleted = 0
-        /*试验所属方=7*/
-        AND table_owner = 7
+            AND wbs_id = #{wbsId}
+            AND parent_id = #{parentId}
+            AND table_type in (${tableType})
+            AND type = 2
+            AND status = 1
+            AND is_deleted = 0
+            /*试验所属方=7*/
+            AND table_owner = 7
         /*解决不同合同段中复制表问题*/
         <if test="contractId == null">
             -- 后管加载原始表
-            and trial_tab_contract_id is null
+            AND trial_tab_contract_id is null
         </if>
         <if test="contractId != null and contractId != ''">
             -- 客户端加载当前合同段表+原始表
-            and (trial_tab_contract_id is null OR (trial_tab_contract_id = #{contractId}))
+            AND (trial_tab_contract_id is null OR (trial_tab_contract_id = #{contractId}))
         </if>
-        ORDER BY sort,node_name,create_time
+            ORDER BY sort,node_name,create_time
     </select>
 
     <select id="selectTabInfoAll" resultType="org.springblade.manager.entity.TableInfo">

+ 6 - 6
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -681,12 +681,12 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                     org.springblade.manager.entity.TableInfo table = tableInfoService.getBaseMapper().selectById(wbsTreePrivate.getInitTableId());
                     if (ObjectUtil.isNotEmpty(table)) {
                         //获取首件记录ID
-//                        String firstId = tableInfoList.get(0).getFirstId();
-                        String firstId = "";
-                        InformationQuery firstInfoByWbsId = informationQueryClient.getFirstInfoByWbsId(firstNodeId);
-                        if (firstInfoByWbsId != null){
-                            firstId = firstInfoByWbsId.getId() + "";
-                        }
+                        String firstId = tableInfoList.get(0).getFirstId();
+//                        String firstId = "";
+//                        InformationQuery firstInfoByWbsId = informationQueryClient.getFirstInfoByWbsId(firstNodeId);
+//                        if (firstInfoByWbsId != null){
+//                            firstId = firstInfoByWbsId.getId() + "";
+//                        }
                         if (StringUtils.isNotEmpty(firstId)) {
                             //删除掉旧数据
                             this.jdbcTemplate.execute("DELETE FROM " + table.getTabEnName() + " WHERE group_id = " + firstId);

+ 15 - 16
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -1622,23 +1622,22 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                             textDictInfoService.saveBatch(list);
                         }
                     }
-
-                    wbsPrivate.setTableOwner(tableInfo.getTableOwner());
-                    wbsPrivate.setInitTableId(tableInfo.getId() + "");
-                    wbsPrivate.setTableType(tableInfo.getTabType());
-                    wbsPrivate.setInitTableName(tableInfo.getTabEnName());
-                    wbsPrivate.setNodeName(tableInfo.getTabChName());
-                    wbsPrivate.setFullName(tableInfo.getTabChName());
-                    wbsPrivate.setFillRate(tableInfo.getFillRate());
-                    wbsPrivate.setProjectId(projectId);
-                    wbsPrivate.setType(10);//带过来的元素信息
-                    wbsPrivate.setParentId(-10L);
-                    wbsPrivate.setStatus(1);
-                    wbsTreePrivateMapper.insert(wbsPrivate);
+                }
+                wbsPrivate.setTableOwner(tableInfo.getTableOwner());
+                wbsPrivate.setInitTableId(tableInfo.getId() + "");
+                wbsPrivate.setTableType(tableInfo.getTabType());
+                wbsPrivate.setInitTableName(tableInfo.getTabEnName());
+                wbsPrivate.setNodeName(tableInfo.getTabChName());
+                wbsPrivate.setFullName(tableInfo.getTabChName());
+                wbsPrivate.setFillRate(tableInfo.getFillRate());
+                wbsPrivate.setProjectId(projectId);
+                wbsPrivate.setType(10);//带过来的元素信息
+                wbsPrivate.setParentId(-10L);
+                wbsPrivate.setStatus(1);
+                wbsTreePrivateMapper.insert(wbsPrivate);
            /* }else{
                 return R.success("没有查到主库信息");
             }*/
-                }
             }
             return R.success("添加成功");
         }
@@ -1794,9 +1793,9 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         if (StringUtils.isNotEmpty(roleAndTabOwner)) {
             //试验tabOwner=7,默认加载全部tabOwner=7的表
             if ("1".equals(tableType)) {
-                tableType = "9"; //记录表
+                tableType = "1,9"; //记录表
             } else if ("2".equals(tableType)) {
-                tableType = "10";  //报告单
+                tableType = "2,10";  //报告单
             }
             return baseMapper.selectWbsTreeTrialTabList(tableType, wbsTreePrivate.getProjectId(), wbsTreePrivate.getWbsId(), wbsTreePrivate.getId(), contractId);
         } else {

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

@@ -1142,7 +1142,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     }
 
                     //构建参数
-                    WbsTree wbsTree = buildTreeNode(wbsTreeZi, allNodeData);
+                    WbsTree wbsTree = this.buildTreeNode(wbsTreeZi, allNodeData);
 
                     if (wbsTree == null) {
                         //构建成功,后置赋值
@@ -1171,22 +1171,30 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 }
             }
         }
-
-        return this.saveBatch(allNodeData, 1000) && baseMapper.updateById(wbsTree1) > 0;
-
+        return this.insertBatchPublic(allNodeData, 1000) && baseMapper.updateById(wbsTree1) > 0;
     }
 
     private WbsTree buildTreeNode(WbsTree wbsTreeZi, List<WbsTree> allNodeData) {
         List<WbsTree> wbsTrees = new ArrayList<>();
+        Map<String, List<WbsTree>> collect = allNodeData.stream().collect(Collectors.groupingBy(WbsTree::getNodeName));
         //判重
         for (WbsTree tree : allNodeData) {
             if (tree.getNodeName().equals(wbsTreeZi.getNodeName())
                     && tree.getWbsId().equals(wbsTreeZi.getWbsId())
                     && tree.getNodeType().equals(wbsTreeZi.getNodeType())
                     && tree.getProjectNodeId().equals(wbsTreeZi.getProjectNodeId())) {
-                //判断上级节点不同,当前节点名相同的tree选择问题
-                //例如:第X跨的上级有上部构造现场浇筑、上部构造预制和安装,导致下方新增重复节点判断时找到的是前一个 TODO
+                //判断上级节点不同,当前节点名相同的选择问题
                 if (!tree.getAncestors().equals(wbsTreeZi.getAncestors())) {
+                    List<WbsTree> wbsTrees1 = collect.get(wbsTreeZi.getNodeName());
+                    //存在两个相同节点以上时,找到本身同级节点
+                    if (wbsTrees1.size() > 1) {
+                        WbsTree wbsTree = wbsTrees1.stream().filter(f -> f.getParentId().equals(wbsTreeZi.getParentId())).findAny().orElse(null);
+                        if (wbsTree != null) {
+                            wbsTrees.add(wbsTree);
+                            break;
+                        }
+                    }
+                    //存在一个相同节点,正常执行
                     wbsTrees.add(tree);
                     break;
                 }
@@ -1198,6 +1206,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         if (wbsTrees.size() <= 0) {
             wbsTreeZi.setStatus(1);
             wbsTreeZi.setType(1);
+            wbsTreeZi.setIsDeleted(0);
             if (wbsTreeZi.getNodeType() == 6) {
                 wbsTreeZi.setIsConcrete(0);
                 wbsTreeZi.setIsExpernode(0);
@@ -1205,11 +1214,12 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         } else {
             //重复 判断是否为同一父节点,相同父节点跳过,不同新增
             for (WbsTree tree : wbsTrees) {
-                if (wbsTreeZi.getNodeType() == 2 || wbsTreeZi.getNodeType() == 3
-                        || wbsTreeZi.getNodeType() == 4 || wbsTreeZi.getNodeType() == 5 || wbsTreeZi.getNodeType() == 6) {
-                    if (!wbsTreeZi.getParentId().equals(tree.getParentId()) && wbsTreeZi.getNodeName().equals(tree.getNodeName())) {
+                if (wbsTreeZi.getNodeType() == 2 || wbsTreeZi.getNodeType() == 3 || wbsTreeZi.getNodeType() == 4 || wbsTreeZi.getNodeType() == 5 || wbsTreeZi.getNodeType() == 6) {
+                    //不同父级相同节点
+                    if (ObjectUtil.isNotEmpty(wbsTreeZi.getParentId()) && ObjectUtil.isNotEmpty(tree.getParentId()) && !wbsTreeZi.getParentId().equals(tree.getParentId()) && wbsTreeZi.getNodeName().equals(tree.getNodeName())) {
                         wbsTreeZi.setStatus(1);
                         wbsTreeZi.setType(1);
+                        wbsTreeZi.setIsDeleted(0);
                         if (wbsTreeZi.getNodeType() == 6) {
                             wbsTreeZi.setIsConcrete(0);
                             wbsTreeZi.setIsExpernode(0);
@@ -1287,4 +1297,29 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         return true;
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    public boolean insertBatchPublic(Collection<WbsTree> entityList, int batchSize) {
+        try {
+            int size = entityList.size();
+            int idxLimit = Math.min(batchSize, size);
+            int i = 1;
+            //保存单批提交的数据集合
+            List<WbsTree> oneBatchList = new ArrayList<>();
+            for (Iterator<WbsTree> var1 = entityList.iterator(); var1.hasNext(); ++i) {
+                WbsTree element = var1.next();
+                oneBatchList.add(element);
+                if (i == idxLimit) {
+                    baseMapper.insertBatchSomeColumn(oneBatchList);
+                    //每次提交后清空集合数据
+                    oneBatchList.clear();
+                    idxLimit = Math.min(idxLimit + batchSize, size);
+                }
+            }
+        } catch (Exception e) {
+            log.error("保存失败", e);
+            return false;
+        }
+        return true;
+    }
+
 }