diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java index 5b57d3222..39f45a0c8 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java @@ -3,6 +3,7 @@ package com.jero.modules.project.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.common.collect.Lists; import com.jero.common.api.vo.Result; import com.jero.common.constant.CommonConstant; import com.jero.common.constant.enums.CutEnum; @@ -28,7 +29,10 @@ import com.jero.modules.system.service.ISysUserService; import com.jero.modules.system.util.StringUtils; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.IOUtils; -import org.apache.poi.hssf.usermodel.*; +import org.apache.poi.hssf.usermodel.HSSFCellStyle; +import org.apache.poi.hssf.usermodel.HSSFRichTextString; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; @@ -742,7 +746,27 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl list = new ArrayList<>(); if (workbook != null) { Sheet sheet = workbook.getSheetAt(0); + deleteBlankRow(sheet); if (sheet != null) { + if(sheet.getPhysicalNumberOfRows()==0){ + if (CutEnum.CN.getValue().equals(cut)) { + throw new JeroBootException("导入的内容为空,请按照模板格式填写内容"); + } else { + throw new JeroBootException("The imported content is empty. Please fill in the content according to the template format."); + } + }else if(sheet.getPhysicalNumberOfRows()<2){ + if (CutEnum.CN.getValue().equals(cut)) { + throw new JeroBootException("导入的表头有误,请按照模板格式填写内容"); + } else { + throw new JeroBootException("The number of imported columns is wrong. Please fill in the contents according to the template format."); + } + }else if(sheet.getPhysicalNumberOfRows()==2){ + if (CutEnum.CN.getValue().equals(cut)) { + throw new JeroBootException("导入的数据为空,请按照模板格式填写内容"); + } else { + throw new JeroBootException("The number of imported columns is wrong. Please fill in the contents according to the template format."); + } + } int rowNos = sheet.getPhysicalNumberOfRows();// 得到excel的总记录条数 for (int i = 0; i < rowNos ; i++) { @@ -765,18 +789,6 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl result = oppositeDisposeData(list, projectId, cut); return result; } +public void deleteBlankRow(Sheet sheet){ + //获取到excel行数 + int num = sheet.getLastRowNum(); + //删除的空行(包含空白行和带有格式的空行) + int bk = 0; + //记录空白行的集合 + List nums = Lists.newArrayList(); + for (int i = 1; i <= num; i++) { + Row row = sheet.getRow(i); + boolean flag = false; + //带有格式的空白行 + if (row != null) { + for (Cell cell : row) { + //判断该单元格是否为空 + if (StringUtils.isEmpty(cell.toString())) { + flag = true; + break; + } + } + if (flag) { + nums.add(i); + bk++; + } + //空白行 + } else { + nums.add(i); + bk++; + } + } + //删除无效数据行(空白行,带格式的空白行) + for (Integer n : nums) { + if (sheet.getRow(n) != null) { + sheet.removeRow(sheet.getRow(n)); + } + } + +} /** * 把导入的数据翻译成对应的id,校验,不存 * 若除责任领域外的导入数据不能为空 @@ -988,6 +1037,23 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl certificationEngineerUsers = new ArrayList<>(); if (StringUtils.isNotBlank(projectRelatedPersonnel.getCertificationEngineerName())){ List certificationEngineerNameList = Arrays.asList(projectRelatedPersonnel.getCertificationEngineerName().split(",")); + //校验是否为项目基础表设定的认证工程师 + List baseCertificationEngineerList = queryCertificationEngineer(projectId); + List baseCertificationEngineerNameList = baseCertificationEngineerList.stream().map(e -> e.getCertificationEngineerName()).collect(Collectors.toList()); + for(String certificationEngineerName : certificationEngineerNameList){ + if(!baseCertificationEngineerNameList.contains(certificationEngineerName)){ + //中英切换提示语 + if(CutEnum.CN.getValue().equals(cut)) { + message.append("导入的认证工程师姓名不属于该项目,请检查第" + row + "行"); + }else { + message.append("The imported certified engineer name does not belong to this project..Please check line " + row ); + } + break; + } + } + + + if (CollectionUtils.isNotEmpty(certificationEngineerNameList) && StringUtils.isNotBlank(certificationEngineerNameList.get(0))) { certificationEngineerNameList = certificationEngineerNameList.stream().distinct().collect(Collectors.toList()); certificationEngineerUsers=sysUserService.queryUserIdListByNameList(certificationEngineerNameList); @@ -1014,6 +1080,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl