|
@@ -43,6 +43,7 @@ import com.rongwei.rwcommoncomponent.file.service.SysFileItemService;
|
|
|
import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
|
|
|
import jodd.util.StringUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.poi.ss.usermodel.CellType;
|
|
|
import org.apache.poi.ss.usermodel.Row;
|
|
|
import org.apache.poi.ss.usermodel.Sheet;
|
|
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
@@ -1597,92 +1598,105 @@ public class ZhcxCommissionCheckServiceImpl extends ServiceImpl<ZhcxCommissionCh
|
|
|
|
|
|
@Override
|
|
|
public R importStandard(MultipartFile file, String mainId) {
|
|
|
+ StringBuilder allStrBuilder = new StringBuilder();
|
|
|
+ Sheet sheet = null;
|
|
|
try {
|
|
|
- StringBuilder allStrBuilder = new StringBuilder();
|
|
|
- Sheet sheet = null;
|
|
|
- try {
|
|
|
- sheet = new XSSFWorkbook(file.getInputStream()).getSheetAt(0);
|
|
|
- int lastRowNum = sheet.getLastRowNum();
|
|
|
- List<ZhcxCommissionCheckBaseInfoTreeDo> treeList = new ArrayList<>();
|
|
|
- List<ZhcxCommissionCheckBaseInfoDetailDo> detailList = new ArrayList<>();
|
|
|
- List<ImportCheckBaseInfoDetailVo> importDetailList = new ArrayList<>();
|
|
|
- List<String> chapterNos = new ArrayList<>();
|
|
|
- for (int i = 1; i <= lastRowNum; i++) {
|
|
|
- StringBuilder stringBuilder = new StringBuilder();
|
|
|
- ImportCheckBaseInfoDetailVo importDetailVo = new ImportCheckBaseInfoDetailVo();
|
|
|
- ZhcxCommissionCheckBaseInfoDetailDo detailDo = new ZhcxCommissionCheckBaseInfoDetailDo();
|
|
|
- Row row = sheet.getRow(i);
|
|
|
- if (ImportExcelUtils.isRowEmpty(row)) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- String number = row.getCell(0) == null ? "" : row.getCell(0).toString().trim();
|
|
|
- String oneLevelClass = row.getCell(1) == null ? "" : row.getCell(1).toString().trim();
|
|
|
- String twoLevelClass = row.getCell(2) == null ? "" : row.getCell(2).toString().trim();
|
|
|
- String threeLevelClass = row.getCell(3) == null ? "" : row.getCell(3).toString().trim();
|
|
|
- String oneClassification = row.getCell(4) == null ? "" : row.getCell(4).toString().trim();
|
|
|
- String twoClassification = row.getCell(5) == null ? "" : row.getCell(5).toString().trim();
|
|
|
- String threeClassification = row.getCell(6) == null ? "" : row.getCell(6).toString().trim();
|
|
|
- String zhContent = row.getCell(7) == null ? "" : row.getCell(7).toString().trim();
|
|
|
- String ehContent = row.getCell(8) == null ? "" : row.getCell(8).toString().trim();
|
|
|
- String testMethod = row.getCell(9) == null ? "" : row.getCell(9).toString().trim();
|
|
|
- String testAddress = row.getCell(10) == null ? "" : row.getCell(10).toString().trim();
|
|
|
- String testTime = row.getCell(11) == null ? "" : row.getCell(11).toString().trim();
|
|
|
- String status = row.getCell(12) == null ? "" : row.getCell(12).toString().trim();
|
|
|
- String isTitle = row.getCell(13) == null ? "" : row.getCell(13).toString().trim();
|
|
|
- if (StringUtils.isBlank(number)) {
|
|
|
- stringBuilder.append("章节号必填");
|
|
|
- }
|
|
|
- if (StringUtils.isBlank(oneLevelClass)) {
|
|
|
- stringBuilder.append("一级分类必填");
|
|
|
- }
|
|
|
- if (StringUtils.isBlank(twoLevelClass)) {
|
|
|
- stringBuilder.append("二级分类必填");
|
|
|
- }
|
|
|
- if (StringUtils.isBlank(isTitle)) {
|
|
|
- stringBuilder.append("是否标题必填");
|
|
|
- }
|
|
|
- boolean containChapterNos = chapterNos.contains(number);
|
|
|
- if (StringUtils.isNotBlank(number)) {
|
|
|
- chapterNos.add(number);
|
|
|
- }
|
|
|
- if (containChapterNos) {
|
|
|
- stringBuilder.append("章节号重复");
|
|
|
+ sheet = new XSSFWorkbook(file.getInputStream()).getSheetAt(0);
|
|
|
+ int lastRowNum = sheet.getLastRowNum();
|
|
|
+ List<ZhcxCommissionCheckBaseInfoTreeDo> treeList = new ArrayList<>();
|
|
|
+ List<ZhcxCommissionCheckBaseInfoDetailDo> detailList = new ArrayList<>();
|
|
|
+ List<ImportCheckBaseInfoDetailVo> importDetailList = new ArrayList<>();
|
|
|
+ List<String> chapterNos = new ArrayList<>();
|
|
|
+ for (int i = 1; i <= lastRowNum; i++) {
|
|
|
+ StringBuilder stringBuilder = new StringBuilder();
|
|
|
+ ImportCheckBaseInfoDetailVo importDetailVo = new ImportCheckBaseInfoDetailVo();
|
|
|
+ Row row = sheet.getRow(i);
|
|
|
+ if (ImportExcelUtils.isRowEmpty(row)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String number = row.getCell(0) == null ? "" : row.getCell(0).toString().trim();
|
|
|
+ String oneLevelClass = row.getCell(1) == null ? "" : row.getCell(1).toString().trim();
|
|
|
+ String twoLevelClass = row.getCell(2) == null ? "" : row.getCell(2).toString().trim();
|
|
|
+ String threeLevelClass = row.getCell(3) == null ? "" : row.getCell(3).toString().trim();
|
|
|
+ String oneClassification = row.getCell(4) == null ? "" : row.getCell(4).toString().trim();
|
|
|
+ String twoClassification = row.getCell(5) == null ? "" : row.getCell(5).toString().trim();
|
|
|
+ String threeClassification = row.getCell(6) == null ? "" : row.getCell(6).toString().trim();
|
|
|
+ String zhContent = row.getCell(7) == null ? "" : row.getCell(7).toString().trim();
|
|
|
+ String ehContent = row.getCell(8) == null ? "" : row.getCell(8).toString().trim();
|
|
|
+ String testMethod = row.getCell(9) == null ? "" : row.getCell(9).toString().trim();
|
|
|
+ String testAddress = row.getCell(10) == null ? "" : row.getCell(10).toString().trim();
|
|
|
+ BigDecimal testTime = (row.getCell(11) == null || row.getCell(11).getCellType()== CellType.BLANK) ? null : new BigDecimal(row.getCell(11).toString());
|
|
|
+ String status = row.getCell(12) == null ? "" : row.getCell(12).toString().trim();
|
|
|
+ String isTitle = row.getCell(13) == null ? "" : row.getCell(13).toString().trim();
|
|
|
+ if (StringUtils.isBlank(number)) {
|
|
|
+ stringBuilder.append("章节号必填");
|
|
|
+ }else {
|
|
|
+ boolean hasSingleDot = number.matches(".*\\..*");
|
|
|
+ if ("是".equals(isTitle)&&hasSingleDot){
|
|
|
+ number = number.replaceAll(".0","");
|
|
|
}
|
|
|
- if (StringUtil.isNotBlank(stringBuilder)) {
|
|
|
- allStrBuilder.append("第").append(i + 1).append("行").append(stringBuilder).append("<br>");
|
|
|
+ }
|
|
|
+ boolean containChapterNos = chapterNos.contains(number);
|
|
|
+ if (containChapterNos) {
|
|
|
+ stringBuilder.append("章节号重复");
|
|
|
+ }
|
|
|
+ chapterNos.add(number);
|
|
|
+ if (StringUtils.isBlank(oneLevelClass)) {
|
|
|
+ stringBuilder.append("一级分类必填");
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(twoLevelClass)&&number.contains(".")) {
|
|
|
+ stringBuilder.append("二级分类必填");
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(isTitle)) {
|
|
|
+ stringBuilder.append("是否标题必填");
|
|
|
+ }
|
|
|
+ if (StringUtil.isNotBlank(stringBuilder)) {
|
|
|
+ allStrBuilder.append("第").append(i + 1).append("行").append(stringBuilder).append("<br>");
|
|
|
+ } else {
|
|
|
+ // 10-> CX BASE长兴基地 20-> USER SITE码头现场
|
|
|
+ if ("CX BASE长兴基地".equals(testAddress)) {
|
|
|
+ testAddress = "10";
|
|
|
} else {
|
|
|
- // 10-> CX BASE长兴基地 20-> USER SITE码头现场
|
|
|
- if ("CX BASE长兴基地".equals(testAddress)) {
|
|
|
- testAddress = "10";
|
|
|
- } else {
|
|
|
- if ("USER SITE码头现场".equals(testAddress)) {
|
|
|
- testAddress = "20";
|
|
|
- }
|
|
|
- }
|
|
|
- if ("是".equals(isTitle)){
|
|
|
- importDetailVo.setChapterno(number);
|
|
|
- importDetailVo.setOnelevelclassification(oneLevelClass);
|
|
|
- importDetailVo.setSecondlevelclassification(twoLevelClass);
|
|
|
- importDetailVo.setThreelevelclassification(threeLevelClass);
|
|
|
- importDetailList.add(importDetailVo);
|
|
|
- }else {
|
|
|
- detailDo.setId(SecurityUtil.getUUID())
|
|
|
- .setPid(mainId)
|
|
|
- .setChapterno(number)
|
|
|
- .setClassification(oneClassification)
|
|
|
- .setClassificationtwo(twoClassification)
|
|
|
- .setClassificationthree(threeClassification)
|
|
|
- .setChtestcontent(zhContent)
|
|
|
- .setEntestcontent(ehContent)
|
|
|
- .setTestmethod(testMethod)
|
|
|
- .setTesttime(new BigDecimal(testTime))
|
|
|
- .setTestaddress(testAddress)
|
|
|
- .setStatus(status)
|
|
|
- .setDeleted("0");
|
|
|
- detailList.add(detailDo);
|
|
|
+ if ("USER SITE码头现场".equals(testAddress)) {
|
|
|
+ testAddress = "20";
|
|
|
}
|
|
|
}
|
|
|
+ if ("是".equals(isTitle)){
|
|
|
+ importDetailVo.setChapterno(number);
|
|
|
+ importDetailVo.setOnelevelclassification(oneLevelClass);
|
|
|
+ importDetailVo.setSecondlevelclassification(twoLevelClass);
|
|
|
+ importDetailVo.setThreelevelclassification(threeLevelClass);
|
|
|
+ importDetailList.add(importDetailVo);
|
|
|
+ }else {
|
|
|
+ ZhcxCommissionCheckBaseInfoDetailDo detailDo = new ZhcxCommissionCheckBaseInfoDetailDo();
|
|
|
+ detailDo.setId(SecurityUtil.getUUID());
|
|
|
+ detailDo.setPid(mainId);
|
|
|
+ detailDo.setChapterno(number);
|
|
|
+ detailDo.setOnelevelclassification(oneLevelClass);
|
|
|
+ detailDo.setSecondlevelclassification(twoLevelClass);
|
|
|
+ detailDo.setThreelevelclassification(threeLevelClass);
|
|
|
+ detailDo.setClassification(oneClassification);
|
|
|
+ detailDo.setClassificationtwo(twoClassification);
|
|
|
+ detailDo.setClassificationthree(threeClassification);
|
|
|
+ detailDo.setChtestcontent(zhContent);
|
|
|
+ detailDo.setEntestcontent(ehContent);
|
|
|
+ detailDo.setTestmethod(testMethod);
|
|
|
+ detailDo.setTesttime(testTime);
|
|
|
+ detailDo.setTestaddress(testAddress);
|
|
|
+ detailDo.setStatus(status);
|
|
|
+ detailDo.setDeleted("0");
|
|
|
+ detailList.add(detailDo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String errMsg = allStrBuilder.toString();
|
|
|
+ if (StringUtils.isNotBlank(errMsg)) {
|
|
|
+ return R.error(errMsg);
|
|
|
+ } else {
|
|
|
+ if (detailList.isEmpty()){
|
|
|
+ return R.error("表格数据不能为空");
|
|
|
}
|
|
|
+ //根据导入数据的一级分类过滤出一级树并做好排序和去重
|
|
|
List<ImportCheckBaseInfoDetailVo> oneLevelTreeList = importDetailList.stream().filter(info->!info.getChapterno().contains(".")).sorted(Comparator.comparing(ImportCheckBaseInfoDetailVo::getChapterno)).collect(Collectors.toList());
|
|
|
List<String> oneLevelClassList = oneLevelTreeList.stream().map(ImportCheckBaseInfoDetailVo::getOnelevelclassification).distinct().collect(Collectors.toList());
|
|
|
int i = 0;
|
|
@@ -1696,27 +1710,31 @@ public class ZhcxCommissionCheckServiceImpl extends ServiceImpl<ZhcxCommissionCh
|
|
|
treeOneDo.setPid("-1");
|
|
|
treeOneDo.setTreecode("1."+i);
|
|
|
treeList.add(treeOneDo);
|
|
|
- List<ImportCheckBaseInfoDetailVo> twoLevelTreeList = importDetailList.stream().filter(detail->detail.getOnelevelclassification().equals(one)&&detail.getChapterno().contains(".")).collect(Collectors.toList());
|
|
|
+ //根据导入数据的二级分类过滤出二级树
|
|
|
+ List<ImportCheckBaseInfoDetailVo> twoLevelTreeList = importDetailList.stream().filter(detail->detail.getOnelevelclassification().equals(one)&&!"".equals(detail.getSecondlevelclassification())&&detail.getChapterno().contains(".")).collect(Collectors.toList());
|
|
|
+ List<String> twoLevelClassList = twoLevelTreeList.stream().map(ImportCheckBaseInfoDetailVo::getSecondlevelclassification).distinct().collect(Collectors.toList());
|
|
|
int j = 0;
|
|
|
- for (ImportCheckBaseInfoDetailVo twoDetailVo:twoLevelTreeList){
|
|
|
+ for (String two:twoLevelClassList){
|
|
|
j++;
|
|
|
ZhcxCommissionCheckBaseInfoTreeDo treeTwoDo = new ZhcxCommissionCheckBaseInfoTreeDo();
|
|
|
treeTwoDo.setId(SecurityUtil.getUUID());
|
|
|
treeTwoDo.setBaseinfoid(mainId);
|
|
|
- treeTwoDo.setName(twoDetailVo.getName());
|
|
|
+ treeTwoDo.setName(two);
|
|
|
treeTwoDo.setLevel(2);
|
|
|
treeTwoDo.setPid(treeOneDo.getId());
|
|
|
treeTwoDo.setFullpid(","+treeOneDo.getId());
|
|
|
treeTwoDo.setTreecode("2."+j);
|
|
|
treeList.add(treeTwoDo);
|
|
|
- List<ImportCheckBaseInfoDetailVo> threeLevelTreeList = importDetailList.stream().filter(detail->detail.getSecondlevelclassification().equals(twoDetailVo.getName())&&detail.getChapterno().contains(".")).collect(Collectors.toList());
|
|
|
+ //根据导入数据的三级分类过滤出三级树
|
|
|
+ List<ImportCheckBaseInfoDetailVo> threeLevelTreeList = importDetailList.stream().filter(detail->detail.getSecondlevelclassification().equals(two)&&!"".equals(detail.getThreelevelclassification())&&detail.getChapterno().contains(".")).collect(Collectors.toList());
|
|
|
+ List<String> threeLevelClassList = threeLevelTreeList.stream().map(ImportCheckBaseInfoDetailVo::getThreelevelclassification).distinct().collect(Collectors.toList());
|
|
|
int k=0;
|
|
|
- for (ImportCheckBaseInfoDetailVo threeDetailVo:threeLevelTreeList){
|
|
|
+ for (String three:threeLevelClassList){
|
|
|
k++;
|
|
|
ZhcxCommissionCheckBaseInfoTreeDo treeThreeDo = new ZhcxCommissionCheckBaseInfoTreeDo();
|
|
|
treeThreeDo.setId(SecurityUtil.getUUID());
|
|
|
treeThreeDo.setBaseinfoid(mainId);
|
|
|
- treeThreeDo.setName(threeDetailVo.getName());
|
|
|
+ treeThreeDo.setName(three);
|
|
|
treeThreeDo.setLevel(3);
|
|
|
treeThreeDo.setPid(treeTwoDo.getId());
|
|
|
treeThreeDo.setFullpid(","+treeOneDo.getId()+","+treeTwoDo.getId());
|
|
@@ -1725,29 +1743,22 @@ public class ZhcxCommissionCheckServiceImpl extends ServiceImpl<ZhcxCommissionCh
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- String errMsg = allStrBuilder.toString();
|
|
|
- if (StringUtils.isNotBlank(errMsg)) {
|
|
|
- return R.error(errMsg);
|
|
|
- } else {
|
|
|
- if (!treeList.isEmpty()&&StringUtils.isNotBlank(mainId)) {
|
|
|
- final LambdaQueryWrapper<ZhcxCommissionCheckDetailTreeDo> removeTreeWrapper = Wrappers.lambdaQuery();
|
|
|
- removeTreeWrapper.eq(ZhcxCommissionCheckDetailTreeDo::getBaseinfoid, mainId);
|
|
|
- zhcxCommissionCheckDetailTreeService.remove(removeTreeWrapper);
|
|
|
- zhcxCommissionCheckBaseInfoTreeService.saveBatch(treeList);
|
|
|
- insertDetailData(treeList,detailList);
|
|
|
- if (!detailList.isEmpty()&&StringUtils.isNotBlank(mainId)){
|
|
|
- final LambdaQueryWrapper<ZhcxCommissionCheckBaseInfoDetailDo> removeDetailWrapper = Wrappers.lambdaQuery();
|
|
|
- removeDetailWrapper.eq(ZhcxCommissionCheckBaseInfoDetailDo::getPid, mainId);
|
|
|
- zhcxCommissionCheckBaseInfoDetailService.remove(removeDetailWrapper);
|
|
|
- zhcxCommissionCheckBaseInfoDetailService.saveBatch(detailList);
|
|
|
- }
|
|
|
+ if (!treeList.isEmpty()&&StringUtils.isNotBlank(mainId)) {
|
|
|
+ final LambdaQueryWrapper<ZhcxCommissionCheckBaseInfoTreeDo> removeTreeWrapper = Wrappers.lambdaQuery();
|
|
|
+ removeTreeWrapper.eq(ZhcxCommissionCheckBaseInfoTreeDo::getBaseinfoid, mainId);
|
|
|
+ zhcxCommissionCheckBaseInfoTreeService.remove(removeTreeWrapper);
|
|
|
+ zhcxCommissionCheckBaseInfoTreeService.saveBatch(treeList);
|
|
|
+ insertDetailData(treeList,detailList);
|
|
|
+ if (!detailList.isEmpty()&&StringUtils.isNotBlank(mainId)){
|
|
|
+ final LambdaQueryWrapper<ZhcxCommissionCheckBaseInfoDetailDo> removeDetailWrapper = Wrappers.lambdaQuery();
|
|
|
+ removeDetailWrapper.eq(ZhcxCommissionCheckBaseInfoDetailDo::getPid, mainId);
|
|
|
+ zhcxCommissionCheckBaseInfoDetailService.remove(removeDetailWrapper);
|
|
|
+ zhcxCommissionCheckBaseInfoDetailService.saveBatch(detailList);
|
|
|
}
|
|
|
}
|
|
|
- } catch (IOException e) {
|
|
|
- return R.error("文件流读取失败");
|
|
|
}
|
|
|
- } catch (Exception e) {
|
|
|
- R.error("标准库导入异常");
|
|
|
+ } catch (IOException e) {
|
|
|
+ return R.error("文件流读取失败");
|
|
|
}
|
|
|
return R.ok();
|
|
|
}
|
|
@@ -1758,18 +1769,26 @@ public class ZhcxCommissionCheckServiceImpl extends ServiceImpl<ZhcxCommissionCh
|
|
|
List<ZhcxCommissionCheckBaseInfoTreeDo> oneLevelTreeList = treeList.stream().filter(infoTreeDo->infoTreeDo.getLevel().equals(1)).collect(Collectors.toList());
|
|
|
List<ZhcxCommissionCheckBaseInfoTreeDo> twoLevelTreeList = treeList.stream().filter(infoTreeDo->infoTreeDo.getLevel().equals(2)).collect(Collectors.toList());
|
|
|
List<ZhcxCommissionCheckBaseInfoTreeDo> threeLevelTreeList = treeList.stream().filter(infoTreeDo->infoTreeDo.getLevel().equals(3)).collect(Collectors.toList());
|
|
|
+ //根据标准库子表一级分类名称查询出一级树
|
|
|
List<ZhcxCommissionCheckBaseInfoTreeDo> queryOneLevel = oneLevelTreeList.stream().filter(treeDo->treeDo.getName().equals(detailDo.getOnelevelclassification())).collect(Collectors.toList());
|
|
|
if (!queryOneLevel.isEmpty()){
|
|
|
- detailDo.setOnelevelclassification(queryOneLevel.get(0).getId());
|
|
|
- detailDo.setTreefullid(","+queryOneLevel.get(0).getId());
|
|
|
- List<ZhcxCommissionCheckBaseInfoTreeDo> queryTwoLevel = twoLevelTreeList.stream().filter(twoTreeDo->twoTreeDo.getName().equals(detailDo.getSecondlevelclassification())).collect(Collectors.toList());
|
|
|
+ //设置标准库子表一级分类
|
|
|
+ String oneLevelTreeId = queryOneLevel.get(0).getId();
|
|
|
+ detailDo.setOnelevelclassification(oneLevelTreeId);
|
|
|
+ detailDo.setTreefullid(","+oneLevelTreeId);
|
|
|
+ //根据一级树表主键和标准库子表二级分类名称查询出二级树
|
|
|
+ List<ZhcxCommissionCheckBaseInfoTreeDo> queryTwoLevel = twoLevelTreeList.stream().filter(twoTreeDo->twoTreeDo.getName().equals(detailDo.getSecondlevelclassification())&&oneLevelTreeId.equals(twoTreeDo.getPid())).collect(Collectors.toList());
|
|
|
if (!queryTwoLevel.isEmpty()){
|
|
|
- detailDo.setSecondlevelclassification(queryTwoLevel.get(0).getId());
|
|
|
- detailDo.setTreefullid(","+queryOneLevel.get(0).getId()+","+queryTwoLevel.get(0).getId());
|
|
|
- List<ZhcxCommissionCheckBaseInfoTreeDo> queryThreeLevel = threeLevelTreeList.stream().filter(threeTreeDo->threeTreeDo.getName().equals(detailDo.getThreelevelclassification())).collect(Collectors.toList());
|
|
|
+ //设置标准库子表二级分类
|
|
|
+ String twoLevelTreeId = queryTwoLevel.get(0).getId();
|
|
|
+ detailDo.setSecondlevelclassification(twoLevelTreeId);
|
|
|
+ detailDo.setTreefullid(","+oneLevelTreeId+","+twoLevelTreeId);
|
|
|
+ //根据二级树表主键和标准库子表三级分类名称查询出三级树
|
|
|
+ List<ZhcxCommissionCheckBaseInfoTreeDo> queryThreeLevel = threeLevelTreeList.stream().filter(threeTreeDo->threeTreeDo.getName().equals(detailDo.getThreelevelclassification())&&twoLevelTreeId.equals(threeTreeDo.getPid())).collect(Collectors.toList());
|
|
|
if (!queryThreeLevel.isEmpty()){
|
|
|
+ //设置标准库子表三级分类
|
|
|
detailDo.setThreelevelclassification(queryThreeLevel.get(0).getId());
|
|
|
- detailDo.setTreefullid(","+queryOneLevel.get(0).getId()+","+queryTwoLevel.get(0).getId()+","+queryThreeLevel.get(0).getId());
|
|
|
+ detailDo.setTreefullid(","+oneLevelTreeId+","+twoLevelTreeId+","+queryThreeLevel.get(0).getId());
|
|
|
}
|
|
|
}
|
|
|
}
|