Browse Source

Merge remote-tracking branch 'origin/master'

qianxb 2 năm trước cách đây
mục cha
commit
d8226fac96

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

@@ -28,8 +28,6 @@ public interface WbsTreeContractMapper extends EasyBaseMapper<WbsTreeContract> {
 
     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);

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

@@ -237,17 +237,6 @@
           AND STATUS = 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
-          AND old_id is null
-    </select>
-
     <select id="selectParent" resultType="org.springblade.manager.entity.WbsTreePrivate">
         SELECT p_key_id, node_name, full_name
         FROM m_wbs_tree_private
@@ -585,7 +574,8 @@
                 node_type = #{item.nodeType},
                 major_data_type = #{item.majorDataType},
                 table_type = #{item.tableType},
-                table_owner = #{item.tableOwner}
+                table_owner = #{item.tableOwner},
+                html_url = #{item.htmlUrl}
             </set>
             WHERE id = #{item.id}
             AND project_id = #{item.projectId}

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

@@ -302,7 +302,8 @@
                 import_matching_info = #{item.importMatchingInfo},
                 mix_ratio_test_ids = #{item.mixRatioTestIds},
                 init_table_name = #{item.initTableName},
-                init_table_id = #{item.initTableId}
+                init_table_id = #{item.initTableId},
+                html_url = #{item.htmlUrl}
             </set>
             WHERE id = #{item.id}
             AND project_id = #{item.projectId}

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

@@ -1049,7 +1049,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
     @Override
     public R getBussPdfInfo(Long pkeyId) throws Exception {
         String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
-       // String file_path = "/Users/hongchuangyanfa/Desktop/";
+        //String file_path = "/Users/hongchuangyanfa/Desktop/";
 
         WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, pkeyId));
@@ -1096,12 +1096,33 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
             if (xx == all) {
                 int fisRow = mergedCell.getFirstRow();
                 int firsrCol = mergedCell.getFirstColumn();
+
                 Cell cell = sheet.getRow(fisRow).getCell(firsrCol);
                 short fontIndex = cell.getCellStyle().getFontIndex();
-                Font fontAt = workbook.getFontAt(fontIndex);
-                short fontHeightInPoints = fontAt.getFontHeightInPoints();
+
+                Font oldfontAt = workbook.getFontAt(fontIndex);
+
+                Font redFont = workbook.createFont();
+                redFont.setFontHeightInPoints(oldfontAt.getFontHeightInPoints());//设置字体大小
+                redFont.setFontName(oldfontAt.getFontName());//设置字体
+
+                CellStyle newStyle = workbook.createCellStyle(); //创建单元格样式
+                newStyle.cloneStyleFrom(cell.getCellStyle());
+
+
+
+                short fontHeightInPoints = redFont.getFontHeightInPoints();
                 if (fontHeightInPoints >= 14 && StringUtils.isEmpty(cell.getStringCellValue()) && fisRow<=8) {
-                    cell.setCellValue(projectInfo.getProjectName());
+
+                    String title=projectInfo.getProjectName();
+                    if(title.length()>=44){
+                        sheet.getRow(fisRow).setHeight((short)900);
+                        newStyle.setWrapText(true);
+                    }
+                    redFont.setBold(true);
+                    newStyle.setFont(redFont);
+                    cell.setCellStyle(newStyle);
+                    cell.setCellValue(title);
                     break;
                 }
             }
@@ -1122,90 +1143,98 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                         if (val.indexOf("__") >= 0) {
                             String[] DataVal = val.split("__");
                             String[] xy = DataVal[1].split("_");
-
-                            Element data = trs.get(Integer.parseInt(xy[0])).select("td").get(Integer.parseInt(xy[1]));
-
-                            if (data.html().indexOf("x1") >= 0 && data.html().indexOf("y1") >= 0) {
-                                int x1 = 0;
-                                int x2 = 0;
-                                int y1 = 0;
-                                int y2 = 0;
-
-                                if (data.html().indexOf("el-tooltip") >= 0) {
-                                    x1 = Integer.parseInt(data.children().get(0).children().get(0).attr("x1"));
-                                    x2 = Integer.parseInt(data.children().get(0).children().get(0).attr("x2"));
-                                    y1 = Integer.parseInt(data.children().get(0).children().get(0).attr("y1"));
-                                } else {
-                                    x1 = Integer.parseInt(data.children().get(0).attr("x1"));
-                                    y1 = Integer.parseInt(data.children().get(0).attr("y1"));
-                                }
-                                if (x1 == 0) {
-                                    x1 = 1;
-                                }
-                                String myData = DataInfo.get(val) + "";
-                                if (myData.indexOf("T") >= 0 && myData.indexOf("-") >= 0) {
-                                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
-                                    sdf.setTimeZone(TimeZone.getTimeZone("GTM+8"));
-                                    SimpleDateFormat formatStr = new SimpleDateFormat("yyyy年MM月dd日");
-                                    if (myData.indexOf(",") >= 0 && myData.indexOf("]") >= 0) {
-
-                                        myData = myData.replace("[", "").replace("]", "").replaceAll("'", "");
-                                        String[] dataVal = myData.split(",");
-
-                                        Date Start_dataStr = sdf.parse(dataVal[0]);
-                                        Date end_dataStr = sdf.parse(dataVal[1]);
-                                        String StartDate = formatStr.format(Start_dataStr);
-                                        String endDate = formatStr.format(end_dataStr);
-                                        if (StartDate.equals(endDate)) {
-                                            myData = StartDate;
-                                        } else {
-                                            myData = StartDate + "-" + endDate;
-                                        }
-                                    } else {
-                                        String[] dataStr = myData.split("T")[0].split("-");
-                                        myData = StringUtil.format("{}年{}月{}日", dataStr[0], dataStr[1], Integer.parseInt(dataStr[2]) + 1);
-                                    }
-                                }
-                                //https:bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload/20220819/b53cb6700db369381e3b03d7737bcdec.jpg__16_1
-                                if (myData.indexOf("https") >= 0 && myData.indexOf("aliyuncs") >= 0) {
-
-                                    InputStream imageIn = CommonUtil.getOSSInputStream(myData);
-                                    byte[] bytes = IOUtils.toByteArray(imageIn);
-                                    // 这里根据实际需求选择图片类型
-                                    int pictureIdx = workbook.addPicture(bytes, 6);
-
-                                    CreationHelper helper = workbook.getCreationHelper();
-                                    ClientAnchor anchor = helper.createClientAnchor();
-                                    anchor.setCol1(x1); // param1是列号
-                                    anchor.setCol2(x2);
-                                    anchor.setRow1(y1); // param2是行号
-                                    anchor.setRow2(y2); // param2是行号
-                                    //
-                                    Drawing drawing = sheet.createDrawingPatriarch();
-                                    anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_AND_RESIZE);
-                                    // 插入图片
-                                    Picture pict = drawing.createPicture(anchor, pictureIdx); // 调整图片占单元格百分比的大小,1.0就是100%
-                                    pict.resize(1, 1);
-                                    FileUtils.imageOrientation(sheet, anchor, new DataVO(x1 - 1, y1 - 1));
-
-                                } else if (myData.equals("1") && data.html().indexOf("hc-form-checkbox-group") >= 0) {
-                                    Row row = sheet.getRow(y1 - 1);
-                                    if(row!=null){
-                                        Cell cell = row.getCell(x1 - 1);
-                                        if(cell!=null || ObjectUtils.isNotEmpty(cell)) {
-                                            String exceVal = cell.getStringCellValue().replaceAll(" ", "");
-                                            short fontIndex = cell.getCellStyle().getFontIndex();
-                                            Font fontAt = workbook.getFontAt(fontIndex);
-                                            fontAt.setFontName("EUDC");
-                                            cell.setCellValue(exceVal.replace("□", "\u2611"));
-                                        }
-                                    }
-                                } else {
-                                    Row row = sheet.getRow(y1 - 1);
-                                    if(row!=null){
-                                        Cell cell = row.getCell(x1 - 1);
-                                        if(cell!=null || ObjectUtils.isNotEmpty(cell)){
-                                            cell.setCellValue(myData);
+                            if (Integer.parseInt(xy[0])<trs.size()) {
+                                Element ytzData = trs.get(Integer.parseInt(xy[0]));
+                                if (ytzData != null) {
+                                    Elements tdsx = ytzData.select("td");
+                                    if (Integer.parseInt(xy[1]) < tdsx.size()) {
+                                        Element data = ytzData.select("td").get(Integer.parseInt(xy[1]));
+                                        if (data != null) {
+                                            if (data.html().indexOf("x1") >= 0 && data.html().indexOf("y1") >= 0) {
+                                                int x1 = 0;
+                                                int x2 = 0;
+                                                int y1 = 0;
+                                                int y2 = 0;
+
+                                                if (data.html().indexOf("el-tooltip") >= 0) {
+                                                    x1 = Integer.parseInt(data.children().get(0).children().get(0).attr("x1"));
+                                                    x2 = Integer.parseInt(data.children().get(0).children().get(0).attr("x2"));
+                                                    y1 = Integer.parseInt(data.children().get(0).children().get(0).attr("y1"));
+                                                } else {
+                                                    x1 = Integer.parseInt(data.children().get(0).attr("x1"));
+                                                    y1 = Integer.parseInt(data.children().get(0).attr("y1"));
+                                                }
+                                                if (x1 == 0) {
+                                                    x1 = 1;
+                                                }
+                                                String myData = DataInfo.get(val) + "";
+                                                if (myData.indexOf("T") >= 0 && myData.indexOf("-") >= 0) {
+                                                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
+                                                    sdf.setTimeZone(TimeZone.getTimeZone("GTM+8"));
+                                                    SimpleDateFormat formatStr = new SimpleDateFormat("yyyy年MM月dd日");
+                                                    if (myData.indexOf(",") >= 0 && myData.indexOf("]") >= 0) {
+
+                                                        myData = myData.replace("[", "").replace("]", "").replaceAll("'", "");
+                                                        String[] dataVal = myData.split(",");
+
+                                                        Date Start_dataStr = sdf.parse(dataVal[0]);
+                                                        Date end_dataStr = sdf.parse(dataVal[1]);
+                                                        String StartDate = formatStr.format(Start_dataStr);
+                                                        String endDate = formatStr.format(end_dataStr);
+                                                        if (StartDate.equals(endDate)) {
+                                                            myData = StartDate;
+                                                        } else {
+                                                            myData = StartDate + "-" + endDate;
+                                                        }
+                                                    } else {
+                                                        String[] dataStr = myData.split("T")[0].split("-");
+                                                        myData = StringUtil.format("{}年{}月{}日", dataStr[0], dataStr[1], Integer.parseInt(dataStr[2]) + 1);
+                                                    }
+                                                }
+                                                //https:bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload/20220819/b53cb6700db369381e3b03d7737bcdec.jpg__16_1
+                                                if (myData.indexOf("https") >= 0 && myData.indexOf("aliyuncs") >= 0) {
+
+                                                    InputStream imageIn = CommonUtil.getOSSInputStream(myData);
+                                                    byte[] bytes = IOUtils.toByteArray(imageIn);
+                                                    // 这里根据实际需求选择图片类型
+                                                    int pictureIdx = workbook.addPicture(bytes, 6);
+
+                                                    CreationHelper helper = workbook.getCreationHelper();
+                                                    ClientAnchor anchor = helper.createClientAnchor();
+                                                    anchor.setCol1(x1); // param1是列号
+                                                    anchor.setCol2(x2);
+                                                    anchor.setRow1(y1); // param2是行号
+                                                    anchor.setRow2(y2); // param2是行号
+                                                    //
+                                                    Drawing drawing = sheet.createDrawingPatriarch();
+                                                    anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_AND_RESIZE);
+                                                    // 插入图片
+                                                    Picture pict = drawing.createPicture(anchor, pictureIdx); // 调整图片占单元格百分比的大小,1.0就是100%
+                                                    pict.resize(1, 1);
+                                                    FileUtils.imageOrientation(sheet, anchor, new DataVO(x1 - 1, y1 - 1));
+
+                                                } else if (myData.equals("1") && data.html().indexOf("hc-form-checkbox-group") >= 0) {
+                                                    Row row = sheet.getRow(y1 - 1);
+                                                    if (row != null) {
+                                                        Cell cell = row.getCell(x1 - 1);
+                                                        if (cell != null || ObjectUtils.isNotEmpty(cell)) {
+                                                            String exceVal = cell.getStringCellValue().replaceAll(" ", "");
+                                                            short fontIndex = cell.getCellStyle().getFontIndex();
+                                                            Font fontAt = workbook.getFontAt(fontIndex);
+                                                            fontAt.setFontName("EUDC");
+                                                            cell.setCellValue(exceVal.replace("□", "\u2611"));
+                                                        }
+                                                    }
+                                                } else {
+                                                    Row row = sheet.getRow(y1 - 1);
+                                                    if (row != null) {
+                                                        Cell cell = row.getCell(x1 - 1);
+                                                        if (cell != null || ObjectUtils.isNotEmpty(cell)) {
+                                                            cell.setCellValue(myData);
+                                                        }
+                                                    }
+                                                }
+                                            }
                                         }
                                     }
                                 }
@@ -1225,32 +1254,39 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                         String key = e.getColKey();
                         String[] keys = key.split("__");
                         String[] trtd = keys[1].split("_");
-                        Element data = trs.get(Integer.parseInt(trtd[0])).select("td").get(Integer.parseInt(trtd[1]));
-                        int x1 = Integer.parseInt(data.children().get(0).attr("x1"));
-                        if (x1 == 0) {
-                            x1 = 1;
-                        }
-                        int y1 = Integer.parseInt(data.children().get(0).attr("y1"));
+                        if (Integer.parseInt(trtd[0])<trs.size()) {
+                            Element ytzData = trs.get(Integer.parseInt(trtd[0]));
+                            if (ytzData != null) {
+                                Elements tdsx = ytzData.select("td");
+                                if (Integer.parseInt(trtd[1])<tdsx.size()) {
+                                    Element data = ytzData.select("td").get(Integer.parseInt(trtd[1]));
+                                    int x1 = Integer.parseInt(data.children().get(0).attr("x1"));
+                                    if (x1 == 0) {
+                                        x1 = 1;
+                                    }
+                                    int y1 = Integer.parseInt(data.children().get(0).attr("y1"));
 
-                        Row row = sheet.getRow(y1 - 1);
-                        if(row!=null){
-                            Cell cell = sheet.getRow(y1-1).getCell(x1-1);
-                            if(cell!=null || ObjectUtils.isNotEmpty(cell)){
-                                short fontIndex = cell.getCellStyle().getFontIndex();
-                                Font oldfontAt = workbook.getFontAt(fontIndex);
-
-                                Font redFont = workbook.createFont();
-                                redFont.setColor(IndexedColors.WHITE.getIndex()); //设置字体颜色
-                                redFont.setFontHeightInPoints(oldfontAt.getFontHeightInPoints());//设置字体大小
-                                redFont.setFontName(oldfontAt.getFontName());//设置字体
-
-                                CellStyle newStyle = workbook.createCellStyle(); //创建单元格样式
-                                newStyle.cloneStyleFrom(cell.getCellStyle());
-                                newStyle.setFont(redFont);
-                                cell.setCellStyle(newStyle);
-                                cell.setCellValue(e.getId() + "");
+                                    Row row = sheet.getRow(y1 - 1);
+                                    if (row != null) {
+                                        Cell cell = sheet.getRow(y1 - 1).getCell(x1 - 1);
+                                        if (cell != null || ObjectUtils.isNotEmpty(cell)) {
+                                            short fontIndex = cell.getCellStyle().getFontIndex();
+                                            Font oldfontAt = workbook.getFontAt(fontIndex);
+
+                                            Font redFont = workbook.createFont();
+                                            redFont.setColor(IndexedColors.WHITE.getIndex()); //设置字体颜色
+                                            redFont.setFontHeightInPoints(oldfontAt.getFontHeightInPoints());//设置字体大小
+                                            redFont.setFontName(oldfontAt.getFontName());//设置字体
+
+                                            CellStyle newStyle = workbook.createCellStyle(); //创建单元格样式
+                                            newStyle.cloneStyleFrom(cell.getCellStyle());
+                                            newStyle.setFont(redFont);
+                                            cell.setCellStyle(newStyle);
+                                            cell.setCellValue(e.getId() + "");
+                                        }
+                                    }
+                                }
                             }
-
                         }
                     }
                 }
@@ -1316,7 +1352,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
     @Override
     public void getBussPdfs(String nodeId, String classify, String contractId, String projectId) throws Exception {
         String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
-        //String file_path = "/Users/hongchuangyanfa/Desktop/";
+       // String file_path = "/Users/hongchuangyanfa/Desktop/";
         // 获取有权限的节点信息
         List<AppWbsTreeContractVO> wbsTreeContractList = wbsTreeContractService.searchNodeAllTable(nodeId, classify, contractId, projectId);
         List<String> data = new ArrayList<>();

+ 4 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -263,7 +263,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                         String targetIds=tableNamePkIdsMaps.stream().filter(m->StringUtils.isEquals(m.get("tableName"),tn)).map(m->m.get("pkId")).map(StringUtils::handleNull).collect(Collectors.joining(","));
                         if(Func.isNotEmpty(targetIds)){
                             List<Map<String,Object>> tableDatas= this.jdbcTemplate.queryForList("select * from "+tn+" where p_key_id in ("+targetIds+")");
-                            fill(tableDatas,removeList,tn,key,StringUtils.handleNull(elementInfo.get("ename")));
+                            String tmp =elementInfo==null?"":StringUtils.handleNull(elementInfo.get("ename"));
+                            fill(tableDatas,removeList,tn,key,tmp);
                         }
                     });
                 }
@@ -849,7 +850,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                  }
                  if(f.contains("quantity")){
                      /*聚合*/
-                     Matcher m = RegexUtils.matcher("T\\(com.mixsmart.utils.CustomFunction\\)\\.(quantity)\\(([^]]+)\\)",f);
+                     Matcher m = RegexUtils.matcher("T\\(com.mixsmart.utils.CustomFunction\\)\\.(quantity)\\(([^)]+)\\)",f);
                      while (m.find()) {
                          Object data=null;
                          List<String> codeList = getCodeList(m.group(2));
@@ -988,7 +989,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             List<Map<String,Object>> mapList =this.jdbcTemplate.queryForList("select CONCAT(a.tab_en_name,':',b.e_key) ekey,a.tab_ch_name tableName,b.e_name ename  ,b.e_length elength,c.dict_value type f" +
                     "rom m_table_info a JOIN m_wbs_form_element b on a.id=b.f_id  " +
                     "LEFT JOIN (select dict_key, dict_value from blade_dict where code ='data_type' and parent_id > 0 and is_sealed = 0 and is_deleted = 0 )c on b.e_type=c.dict_key" +
-                    " where  a.tab_en_name in( "+ Arrays.stream(relyArr).map(e->e.split(StringPool.COLON)[0]).distinct().collect(Collectors.joining(StringPool.COMMA,"'","'"))+")");
+                    " where  a.tab_en_name in( "+ Arrays.stream(relyArr).map(e->e.split(StringPool.COLON)[0]).distinct().collect(Collectors.joining("','","'","'"))+")");
             if(ListUtils.isNotEmpty(mapList)){
              return   mapList.stream().filter(e-> Arrays.stream(relyArr).anyMatch(c->StringUtils.isEquals(e.get("ekey"),c))).collect(Collectors.toMap(e->StringUtils.handleNull(e.get("ekey")), e->e));
             }

+ 24 - 17
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -79,29 +79,35 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         List<String> idList = Arrays.asList(ids);
         List<String> idList1 = idList.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
 
-        //获取当前合同段wbs所有节点、表单(不包括客户端新增或者复制节点)
-        List<WbsTreeContract> list = baseMapper.findAllNodeList2(pawDTO.getProjectId(), pawDTO.getContractId(), pawDTO.getWbsId());
+        //获取当前合同段所有节点、表单(不包括客户端新增或者复制节点)
+        List<WbsTreeContract> list = baseMapper.selectList(Wrappers.<WbsTreeContract>lambdaQuery()
+                .select(WbsTreeContract::getId, WbsTreeContract::getType)
+                .eq(WbsTreeContract::getContractId, pawDTO.getContractId())
+                .eq(WbsTreeContract::getWbsId, pawDTO.getWbsId())
+                .eq(WbsTreeContract::getStatus, 1)
+                .isNull(WbsTreeContract::getOldId));
 
-        //当前合同段所有表单Id
+        //当前合同段所有表单ids
         List<String> collect1 = new ArrayList<>();
-        //当前合同段所有节点Id
+        //当前合同段所有节点ids
         List<String> collect2 = new ArrayList<>();
-
         if (list.size() > 0) {
-            List<WbsTreeContract> collect3 = list.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
-            collect1 = collect3.stream().map(WbsTreeContract::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
-            List<WbsTreeContract> collect4 = list.stream().filter(f -> f.getType() == 1).collect(Collectors.toList());
-            collect2 = collect4.stream().map(WbsTreeContract::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
+            collect1 = list.stream().filter(f -> f.getType() == 2).collect(Collectors.toList()).stream().map(WbsTreeContract::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
+            collect2 = list.stream().filter(f -> f.getType() == 1).collect(Collectors.toList()).stream().map(WbsTreeContract::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
         }
 
-        List<String> collect5 = collect2;
-        List<String> saveIds = idList1.stream().filter(f -> !collect5.contains(f)).collect(Collectors.toList());
-        List<String> delIds = collect5.stream().filter(f -> !idList1.contains(f)).collect(Collectors.toList());
+        List<String> collect3 = collect2;
+        List<String> saveIds = idList1.stream().filter(f -> !collect3.contains(f)).collect(Collectors.toList());
+        List<String> delIds = collect3.stream().filter(f -> !idList1.contains(f)).collect(Collectors.toList());
 
+        //TODO ---------节点未变只同步元素表---------
         if (saveIds.size() == 0 && delIds.size() == 0) {
-            //节点id未变,只进行节点下的元素表的同步
             List<WbsTreePrivate> wbsTreePrivateList2 = new ArrayList<>();
-            List<WbsTreePrivate> wbsTreePrivateList = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, Long.parseLong(pawDTO.getProjectId())).eq(WbsTreePrivate::getWbsId, Long.parseLong(pawDTO.getWbsId())).eq(WbsTreePrivate::getType, 2));
+            List<WbsTreePrivate> wbsTreePrivateList = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                    .eq(WbsTreePrivate::getProjectId, Long.parseLong(pawDTO.getProjectId()))
+                    .eq(WbsTreePrivate::getWbsId, Long.parseLong(pawDTO.getWbsId()))
+                    .eq(WbsTreePrivate::getType, 2)
+            );
 
             wbsTreePrivateList.forEach(wbsTreePrivate -> {
                 idList1.forEach(id -> {
@@ -114,6 +120,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
             List<String> collect = wbsTreePrivateList2.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
 
             List<String> diffRent1 = DiffListUtil.getDiffRent(collect, collect1);
+
             if (collect.size() == collect1.size()) {
                 return true;
             }
@@ -141,7 +148,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
             }
 
         } else {
-            //删除
+            //TODO ---------删除---------
             if (delIds.size() > 0) {
                 List<ContractRelationJlyz> contractRelationJLYZList = baseMapper.selectContractRelationInfoByidSG2(pawDTO.getContractId());
                 if (contractRelationJLYZList.size() > 0) {
@@ -169,7 +176,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                 baseMapper.deleteBatch(ids1, pawDTO.getWbsId(), pawDTO.getProjectId(), pawDTO.getContractId());
             }
 
-            //新增
+            //TODO ---------新增---------
             if (saveIds.size() > 0) {
                 List<WbsTreePrivate> wbsTreePrivatesList = new ArrayList<>();
                 List<WbsTreeContract> wbsTreeContractList = new ArrayList<>();
@@ -323,7 +330,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                 tableOwners = "1,2,3";
             } else if (tableOwner.equals("2")) {
                 tableOwners = "4,5,6";
-            }else {
+            } else {
                 tableOwners = "7,8,9";
             }
             tableOwnerList = Func.toStrList(tableOwners);

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

@@ -457,7 +457,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         List<WbsTreePrivate> listPrivate = new ArrayList<>();
         List<WbsTreeContract> listContract = new ArrayList<>();
         //获取当前项目下所有合同段信息
-        List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, projectId));
+        List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().select(ContractInfo::getId).eq(ContractInfo::getPId, projectId));
 
         for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
             for (WbsTreePrivate treePrivateNow : wbsTreePrivatesAllNow) {
@@ -471,8 +471,8 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                                 || (ObjectUtils.isNotEmpty(wbsTreePrivate.getImportMatchingInfo()) && !wbsTreePrivate.getImportMatchingInfo().equals(treePrivateNow.getImportMatchingInfo()))
                                 || (ObjectUtils.isNotEmpty(wbsTreePrivate.getMixRatioTestIds()) && !wbsTreePrivate.getMixRatioTestIds().equals(treePrivateNow.getMixRatioTestIds()))
                                 || (ObjectUtils.isNotEmpty(wbsTreePrivate.getInitTableId()) && !wbsTreePrivate.getInitTableId().equals(treePrivateNow.getInitTableId()))
-                                || (ObjectUtils.isNotEmpty(wbsTreePrivate.getInitTableName()) && !wbsTreePrivate.getInitTableName().equals(treePrivateNow.getInitTableName()))
-                        )) {
+                                || (ObjectUtils.isNotEmpty(wbsTreePrivate.getInitTableName()) && !wbsTreePrivate.getInitTableName().equals(treePrivateNow.getInitTableName())
+                                || (ObjectUtils.isNotEmpty(wbsTreePrivate.getHtmlUrl()) && !wbsTreePrivate.getHtmlUrl().equals(treePrivateNow.getHtmlUrl()))))) {
                     //修改项目wbs信息
                     WbsTreePrivate wbsPrivate = BeanUtil.copyProperties(wbsTreePrivate, WbsTreePrivate.class);
                     if (wbsPrivate != null) {
@@ -493,14 +493,18 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
             }
         }
 
+        //修改到项目
         if (listPrivate.size() > 0) {
             baseMapper.updateBatchWbsPrivate(listPrivate);
         }
+
+        //修改到合同段
         if (listContract.size() > 0) {
             //获取合同段下的复制、新增节点
             List<WbsTreeContract> wbsTreeContractsCopyOrAddAll = new ArrayList<>();
             for (ContractInfo contractInfo : contractInfos) {
                 List<WbsTreeContract> wbsTreeContractsCopyOrAdd = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>lambdaQuery()
+                        .select(WbsTreeContract::getId, WbsTreeContract::getOldId, WbsTreeContract::getProjectId, WbsTreeContract::getContractId)
                         .eq(WbsTreeContract::getProjectId, projectId)
                         .eq(WbsTreeContract::getContractId, contractInfo.getId())
                         .eq(WbsTreeContract::getWbsType, wbsType)
@@ -520,6 +524,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                         obj2.setMajorDataType(obj1.getMajorDataType());
                         obj2.setTableType(obj1.getTableType());
                         obj2.setTableOwner(obj1.getTableOwner());
+                        obj2.setHtmlUrl(obj1.getHtmlUrl());
                         listContractAdd.add(obj2);
                     }
                 }
@@ -802,34 +807,19 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 
             if (("1").equals(wbsTreePrivate.getWbsType())) {
                 if (("public").equals(projectInfo.getReferenceWbsTemplateType())) {
-                    /*TODO-------------------------------------公有引用同步--------------------------------------------*/
+                    /*TODO-------------------------------------质检公有引用同步--------------------------------------------*/
                     //获取当前节点对应的公有引用树下的元素表
-                    WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda()
-                            .eq(WbsTree::getId, wbsTreePrivate.getId())
-                    );
+                    WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getId, wbsTreePrivate.getId()));
                     List<WbsTree> wbsTreesPublicTables;
                     if (wbsTree.getAncestors().equals("0")) {
                         //根节点
-                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
-                                .eq(WbsTree::getWbsId, wbsTree.getWbsId())
-                                .eq(WbsTree::getType, 2)
-                                .eq(WbsTree::getStatus, 1)
-                        );
+                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2).eq(WbsTree::getStatus, 1));
                     } else {
-                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
-                                .eq(WbsTree::getWbsId, wbsTree.getWbsId())
-                                .eq(WbsTree::getType, 2)
-                                .eq(WbsTree::getStatus, 1)
-                                .like(WbsTree::getAncestors, wbsTree.getId())
-                        );
+                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2).eq(WbsTree::getStatus, 1).like(WbsTree::getAncestors, wbsTree.getId()));
                     }
 
                     //获取当前项目树下的元素表 节点
-                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                            .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
-                            .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
-                            .eq(WbsTreePrivate::getStatus, 1)
-                    );
+                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId()).eq(WbsTreePrivate::getStatus, 1));
                     List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
 
                     List<WbsTreePrivate> wbsTreePrivatesProjectTables;
@@ -842,22 +832,17 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 
                     //获取新增的公有元素表addPublicTable
                     List<WbsTree> addPublicTable = wbsTreesPublicTables.stream().filter(f ->
-                            !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
-                            .collect(Collectors.toList());
+                            !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId())).collect(Collectors.toList());
 
                     //判断当前新增的表在项目的wbs树中是否存在上级节点,存在表示可以新增,不存在表示不新增
                     List<WbsTree> addPublicTables = addPublicTable.stream().filter(node ->
-                            wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
-                    ).collect(Collectors.toList());
+                            wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())).collect(Collectors.toList());
 
                     //获取当前项目下所有施工合同段id
                     List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, wbsTreePrivate.getProjectId()));
 
                     //获取当前项目下所有合同段树
-                    List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
-                            .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
-                            .eq(WbsTreeContract::getStatus, 1)
-                    );
+                    List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda().eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreeContract::getStatus, 1));
                     List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
 
@@ -946,35 +931,20 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                     }
 
                 } else if (("private").equals(projectInfo.getReferenceWbsTemplateType())) {
-                    /*TODO-------------------------------------私有引用同步--------------------------------------------*/
+                    /*TODO-------------------------------------质检私有引用同步--------------------------------------------*/
                     //根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
                     WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
                     //获取当前私有引用树的元素表信息
                     List<WbsTreePrivate> wbsTreePrivateRootTables;
                     if (wbsTreePrivate.getAncestors().equals("0")) {
                         //根节点
-                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                                .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
-                                .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
-                                .eq(WbsTreePrivate::getType, 2)
-                                .eq(WbsTreePrivate::getStatus, 1)
-                        );
+                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId()).eq(WbsTreePrivate::getType, 2).eq(WbsTreePrivate::getStatus, 1));
                     } else {
-                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                                .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
-                                .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
-                                .eq(WbsTreePrivate::getType, 2)
-                                .eq(WbsTreePrivate::getStatus, 1)
-                                .like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId())
-                        );
+                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId()).eq(WbsTreePrivate::getType, 2).eq(WbsTreePrivate::getStatus, 1).like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId()));
                     }
 
                     //获取当前项目选择的节点下的所有元素表 节点
-                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                            .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
-                            .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
-                            .eq(WbsTreePrivate::getStatus, 1)
-                    );
+                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId()).eq(WbsTreePrivate::getStatus, 1));
 
                     List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreePrivate> wbsTreePrivatesProjectTables;
@@ -987,22 +957,17 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 
                     //获取新增的私有元素表addPrivateTable
                     List<WbsTreePrivate> addPrivateTable = wbsTreePrivateRootTables.stream().filter(f ->
-                            !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
-                            .collect(Collectors.toList());
+                            !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId())).collect(Collectors.toList());
 
                     //获取当前项目下所有施工合同段id
                     List<ContractInfo> contractInfos = contractInfoMapper.selectContractIdByProjectId(wbsTreePrivate.getProjectId());
 
                     //判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
                     List<WbsTreePrivate> addPrivateTables = addPrivateTable.stream().filter(node ->
-                            wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
-                    ).collect(Collectors.toList());
+                            wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())).collect(Collectors.toList());
 
                     //获取当前项目下所有合同段树
-                    List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
-                            .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
-                            .eq(WbsTreeContract::getStatus, 1)
-                    );
+                    List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda().eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreeContract::getStatus, 1));
                     List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
 
@@ -1089,34 +1054,19 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
             }
             if (("2").equals(wbsTreePrivate.getWbsType())) {
                 if (("public").equals(projectInfo.getReferenceWbsTemplateTypeTrial())) {
-                    /*TODO-------------------------------------公有引用同步--------------------------------------------*/
+                    /*TODO-------------------------------------试验公有引用同步--------------------------------------------*/
                     //获取当前节点对应的公有引用树下的元素表
-                    WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda()
-                            .eq(WbsTree::getId, wbsTreePrivate.getId())
-                    );
+                    WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getId, wbsTreePrivate.getId()));
                     List<WbsTree> wbsTreesPublicTables;
                     if (wbsTree.getAncestors().equals("0")) {
                         //根节点
-                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
-                                .eq(WbsTree::getWbsId, wbsTree.getWbsId())
-                                .eq(WbsTree::getType, 2)
-                                .eq(WbsTree::getStatus, 1)
-                        );
+                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2).eq(WbsTree::getStatus, 1));
                     } else {
-                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
-                                .eq(WbsTree::getWbsId, wbsTree.getWbsId())
-                                .eq(WbsTree::getType, 2)
-                                .eq(WbsTree::getStatus, 1)
-                                .like(WbsTree::getAncestors, wbsTree.getId())
-                        );
+                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2).eq(WbsTree::getStatus, 1).like(WbsTree::getAncestors, wbsTree.getId()));
                     }
 
                     //获取当前项目树下的元素表 节点
-                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                            .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
-                            .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
-                            .eq(WbsTreePrivate::getStatus, 1)
-                    );
+                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId()).eq(WbsTreePrivate::getStatus, 1));
                     List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
 
                     List<WbsTreePrivate> wbsTreePrivatesProjectTables;
@@ -1129,22 +1079,17 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 
                     //获取新增的公有元素表addPublicTable
                     List<WbsTree> addPublicTable = wbsTreesPublicTables.stream().filter(f ->
-                            !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
-                            .collect(Collectors.toList());
+                            !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId())).collect(Collectors.toList());
 
                     //判断当前新增的表在项目的wbs树中是否存在上级节点,存在表示可以新增,不存在表示不新增
                     List<WbsTree> addPublicTables = addPublicTable.stream().filter(node ->
-                            wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
-                    ).collect(Collectors.toList());
+                            wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())).collect(Collectors.toList());
 
                     //获取当前项目下所有施工合同段id
                     List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, wbsTreePrivate.getProjectId()));
 
                     //获取当前项目下所有合同段树
-                    List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
-                            .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
-                            .eq(WbsTreeContract::getStatus, 1)
-                    );
+                    List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda().eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreeContract::getStatus, 1));
                     List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
 
@@ -1233,35 +1178,20 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                     }
 
                 } else if (("private").equals(projectInfo.getReferenceWbsTemplateTypeTrial())) {
-                    /*TODO-------------------------------------私有引用同步--------------------------------------------*/
+                    /*TODO-------------------------------------试验私有引用同步--------------------------------------------*/
                     //根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
                     WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
                     //获取当前私有引用树的元素表信息
                     List<WbsTreePrivate> wbsTreePrivateRootTables;
                     if (wbsTreePrivate.getAncestors().equals("0")) {
                         //根节点
-                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                                .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
-                                .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
-                                .eq(WbsTreePrivate::getType, 2)
-                                .eq(WbsTreePrivate::getStatus, 1)
-                        );
+                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId()).eq(WbsTreePrivate::getType, 2).eq(WbsTreePrivate::getStatus, 1));
                     } else {
-                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                                .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
-                                .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
-                                .eq(WbsTreePrivate::getType, 2)
-                                .eq(WbsTreePrivate::getStatus, 1)
-                                .like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId())
-                        );
+                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId()).eq(WbsTreePrivate::getType, 2).eq(WbsTreePrivate::getStatus, 1).like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId()));
                     }
 
                     //获取当前项目选择的节点下的所有元素表 节点
-                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                            .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
-                            .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
-                            .eq(WbsTreePrivate::getStatus, 1)
-                    );
+                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId()).eq(WbsTreePrivate::getStatus, 1));
 
                     List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreePrivate> wbsTreePrivatesProjectTables;
@@ -1274,22 +1204,17 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 
                     //获取新增的私有元素表addPrivateTable
                     List<WbsTreePrivate> addPrivateTable = wbsTreePrivateRootTables.stream().filter(f ->
-                            !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
-                            .collect(Collectors.toList());
+                            !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId())).collect(Collectors.toList());
 
                     //获取当前项目下所有施工合同段id
                     List<ContractInfo> contractInfos = contractInfoMapper.selectContractIdByProjectId(wbsTreePrivate.getProjectId());
 
                     //判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
                     List<WbsTreePrivate> addPrivateTables = addPrivateTable.stream().filter(node ->
-                            wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
-                    ).collect(Collectors.toList());
+                            wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())).collect(Collectors.toList());
 
                     //获取当前项目下所有合同段树
-                    List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
-                            .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
-                            .eq(WbsTreeContract::getStatus, 1)
-                    );
+                    List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda().eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreeContract::getStatus, 1));
                     List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
 

+ 22 - 16
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -340,16 +340,21 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 //质检私有
             } else if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateId()) && ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateType()) && ("private").equals(projectInfo.getReferenceWbsTemplateType())) {
                 //获取私有引用根节点
-                WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateId()));
+                WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
+                        .select(WbsTreePrivate::getProjectId, WbsTreePrivate::getWbsId)
+                        .eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateId()));
                 //获取私有引用项目树
                 List<WbsTreePrivate> wbsTreePrivateAllOld = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                        .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRecord.getProjectId())
+                        .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType, WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo, WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId, WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl)
                         .eq(WbsTreePrivate::getStatus, 1)
-                        .and(obj -> obj.eq(WbsTreePrivate::getWbsId, wbsTreePrivateRecord.getWbsId()).or().isNull(WbsTreePrivate::getWbsId))
+                        .eq(WbsTreePrivate::getProjectId, Long.parseLong(wbsTreePrivateRecord.getProjectId()))
+                        .and(obj -> obj.eq(WbsTreePrivate::getWbsId, Long.parseLong(wbsTreePrivateRecord.getWbsId())).or().isNull(WbsTreePrivate::getWbsId))
                 );
                 //获取当前项目私有树、元素表
                 List<WbsTreePrivate> wbsTreePrivatesAllNow = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                        .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
+                        .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType, WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo, WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId, WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl)
+                        .eq(WbsTreePrivate::getStatus, 1)
+                        .eq(WbsTreePrivate::getProjectId, Long.parseLong(wbsTreePrivate.getProjectId()))
                         .and(obj -> obj.eq(WbsTreePrivate::getWbsId, projectInfo.getReferenceWbsTemplateId()).or().isNull(WbsTreePrivate::getWbsId))
                 );
                 //同步修改
@@ -369,16 +374,21 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 //试验私有
             } else if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateIdTrial()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateTypeTrial()) && ("private").equals(projectInfo.getReferenceWbsTemplateTypeTrial()))) {
 
-                WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateIdTrial()));
+                WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
+                        .select(WbsTreePrivate::getProjectId, WbsTreePrivate::getWbsId)
+                        .eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateIdTrial()));
 
                 List<WbsTreePrivate> wbsTreePrivateAllOld = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                        .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
+                        .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType, WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo, WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId, WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl)
                         .eq(WbsTreePrivate::getStatus, 1)
-                        .and(obj -> obj.eq(WbsTreePrivate::getWbsId, wbsTreePrivateRecord.getWbsId()).or().isNull(WbsTreePrivate::getWbsId))
+                        .eq(WbsTreePrivate::getProjectId, Long.parseLong(wbsTreePrivate.getProjectId()))
+                        .and(obj -> obj.eq(WbsTreePrivate::getWbsId, Long.parseLong(wbsTreePrivateRecord.getWbsId())).or().isNull(WbsTreePrivate::getWbsId))
                 );
 
                 List<WbsTreePrivate> wbsTreePrivatesAllNow = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                        .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
+                        .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType, WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo, WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId, WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl)
+                        .eq(WbsTreePrivate::getStatus, 1)
+                        .eq(WbsTreePrivate::getProjectId, Long.parseLong(wbsTreePrivate.getProjectId()))
                         .and(obj -> obj.eq(WbsTreePrivate::getWbsId, projectInfo.getReferenceWbsTemplateIdTrial()).or().isNull(WbsTreePrivate::getWbsId))
                 );
 
@@ -558,16 +568,12 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
             if (pawDTO.getReferenceType().equals("public")) {
                 //当前公有引用
-                List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                        .select(WbsTreePrivate::getId)
-                        .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId()).eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId()).eq(WbsTreePrivate::getType, 1));
+                List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().select(WbsTreePrivate::getId).eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId()).eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId()).eq(WbsTreePrivate::getType, 1));
                 List<String> collect = wbsTreePrivates.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
                 idList2.addAll(collect);
             } else if (pawDTO.getReferenceType().equals("private")) {
                 //当前私有引用
-                List<WbsTreePrivate> wbsTreePrivates2 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                        .select(WbsTreePrivate::getId)
-                        .eq(WbsTreePrivate::getWbsId, pawDTO.getPrimaryKeyId()).eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId()).eq(WbsTreePrivate::getType, 1));
+                List<WbsTreePrivate> wbsTreePrivates2 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().select(WbsTreePrivate::getId).eq(WbsTreePrivate::getWbsId, pawDTO.getPrimaryKeyId()).eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId()).eq(WbsTreePrivate::getType, 1));
                 List<String> collect = wbsTreePrivates2.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
                 idList2.addAll(collect);
             }
@@ -779,7 +785,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         List<List<WbsTreePrivate>> partition1 = Lists.partition(insertData1, 1000);
                         CompletableFuture<Void> handle = CompletableFuture.allOf(partition1.stream().map(addList ->
                                 CompletableFuture.runAsync(() -> {
-                                    wbsTreePrivateService.insertBatch(addList,1000);
+                                    wbsTreePrivateService.insertBatch(addList, 1000);
                                 }, executor)).toArray(CompletableFuture[]::new));
                         handle.join();
 
@@ -796,7 +802,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         List<List<WbsTreePrivate>> partition1 = Lists.partition(insertData2, 1000);
                         CompletableFuture<Void> handle = CompletableFuture.allOf(partition1.stream().map(addList ->
                                 CompletableFuture.runAsync(() -> {
-                                    wbsTreePrivateService.insertBatch(addList,1000);
+                                    wbsTreePrivateService.insertBatch(addList, 1000);
                                 }, executor)).toArray(CompletableFuture[]::new));
                         handle.join();