Explorar o código

试车标准库导入代码补充

zhoudazhuang hai 7 meses
pai
achega
87276bf64c

+ 132 - 113
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxCommissionCheckServiceImpl.java

@@ -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());
                         }
                     }
                 }