可以用一个List集合来收集导入的同一字段属性的信息,然后每次都判断该集合中是否已经包含有该数据。
比如判断:编码,或者名称是否重复。
//检查数据是否符合规范
List<String> codeList = new ArrayList<>();
List<String> nameList = new ArrayList<>();
//记录错误位置
List<String> errorMsg = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
GhaKbHospitalTypeDictionary ghaKbHospitalTypeDictionary = list.get(i);
if (StringUtils.isEmpty(ghaKbHospitalTypeDictionary.getHospitalTypeName())) {
errorMsg.add("表中第" + (i + 2) + "行”省份名称“内容不能为空!");
}
if (ghaKbHospitalTypeDictionary.getHospitalTypeCode() == null) {
errorMsg.add("表中第" + (i + 2) + "行”省份编码“内容不能为空!");
}
if (nameList.contains(ghaKbHospitalTypeDictionary.getHospitalTypeName())) {
errorMsg.add("表中第" + (i + 2) + "行”省份名称“内容重复!");
} else {
nameList.add(ghaKbHospitalTypeDictionary.getHospitalTypeName());
}
if (codeList.contains(ghaKbHospitalTypeDictionary.getHospitalTypeCode())) {
errorMsg.add("表中第" + (i + 2) + "行”省份编码“内容重复!");
} else {
codeList.add(ghaKbHospitalTypeDictionary.getHospitalTypeCode());
}
}
if (errorMsg.size() > 0) {
return AjaxResult.error(String.valueOf(errorMsg));
}
如果是判断二个字段,不能同时相同,比如,1,a 不能有 1, a. 但是可以有1,b 或者2,a .
则可创建一个包含二个属性的DTO,然后重写该二个属性的equal方法,再用contain判断。
@Setter
@Getter
public class JudgeNameDTO {
/**维度编号**/
private String extentCode;
/**章节名称,或章节编号**/
private String chapterCodeName;
public JudgeNameDTO(String extentCode, String chapterCodeName) {
this.extentCode = extentCode;
this.chapterCodeName = chapterCodeName;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
JudgeNameDTO that = (JudgeNameDTO) o;
return Objects.equals(extentCode, that.extentCode) && Objects.equals(chapterCodeName, that.chapterCodeName);
}
@Override
public int hashCode() {
return Objects.hash(extentCode, chapterCodeName);
}
}
//检查数据是否符合规范
List<JudgeNameDTO> judgeNameDTOSCode = new ArrayList<>();
List<JudgeNameDTO> judgeNameDTOSName = new ArrayList<>();
//记录错误位置
List<String> errorMsg = new ArrayList<>();
for (int i = 0; i<list.size(); i++){
GhaKbTitleExportDTO ghaKbTitleExportDTO = list.get(i);
if (StringUtils.isEmpty(ghaKbTitleExportDTO.getTitleCode())){
errorMsg.add(excelTitle + "表第" + (i+2) + "行”维度标题“内容不能为空!");
}
if (StringUtils.isEmpty(ghaKbTitleExportDTO.getTitleName())){
errorMsg.add(excelTitle + "表第" + (i+2) + "行”维度名称“内容不能为空!");
}
if (!(StringUtils.isEmpty(ghaKbTitleExportDTO.getChapterTitle()) && StringUtils.isEmpty(ghaKbTitleExportDTO.getChapterName()))){
if (StringUtils.isEmpty(ghaKbTitleExportDTO.getChapterName())){
errorMsg.add(excelTitle + "表第" + (i+2) + "行”章节名称或章节标题“内容不能为空!");
}
}
JudgeNameDTO judgeNameDTO = new JudgeNameDTO(ghaKbTitleExportDTO.getTitleCode(), ghaKbTitleExportDTO.getChapterTitle());
if (judgeNameDTOSCode.contains(judgeNameDTO)){
errorMsg.add(excelTitle + "表第" + (i+2) + "行”章节标题“内容重复!");
}else {
judgeNameDTOSCode.add(judgeNameDTO);
}
JudgeNameDTO judgeNameDTO1 = new JudgeNameDTO(ghaKbTitleExportDTO.getTitleCode(), ghaKbTitleExportDTO.getChapterName());
if (judgeNameDTOSName.contains(judgeNameDTO1)) {
errorMsg.add(excelTitle + "表第" + (i+2) + "行”章节名称“内容重复!");
}else {
judgeNameDTOSName.add(judgeNameDTO1);
}
}