package com.chinagas.modules.schsf.utils.listener; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.exception.ExcelDataConvertException; import com.chinagas.common.core.utils.StringUtils; import com.chinagas.modules.schsf.domain.McBasicCmty; import java.util.Map; public class McBasicCmtyImportInspection extends AnalysisEventListener { @Override public void invoke(McBasicCmty data, AnalysisContext context) { McBasicCmty mcBasicCmty = data; if (mcBasicCmty.getFiscalYear() == null) { throw new RuntimeException(String.format("第%s行 财年 为空,请核实", context.readRowHolder().getRowIndex() + 1)); } if (StringUtils.isEmpty(mcBasicCmty.getRegionName())) { throw new RuntimeException(String.format("第%s行 区域 为空,请核实", context.readRowHolder().getRowIndex() + 1)); } if (StringUtils.isEmpty(mcBasicCmty.getCompanyName())) { throw new RuntimeException(String.format("第%s行 项目公司 为空,请核实", context.readRowHolder().getRowIndex() + 1)); } if (StringUtils.isEmpty(mcBasicCmty.getCompanyCode())) { throw new RuntimeException(String.format("第%s行 公司代码 为空,请核实", context.readRowHolder().getRowIndex() + 1)); } if (StringUtils.isEmpty(mcBasicCmty.getVlgOrCmty())) { throw new RuntimeException(String.format("第%s行 小区/村 为空,请核实", context.readRowHolder().getRowIndex() + 1)); } if (StringUtils.isNotEmpty(mcBasicCmty.getUrbRurCls())) { if (!mcBasicCmty.getUrbRurCls().equals("乡燃") && !mcBasicCmty.getUrbRurCls().equals("城燃")){ throw new RuntimeException(String.format("第%s行 城乡分类 请选择‘乡燃’或‘城燃’,请核实", context.readRowHolder().getRowIndex() + 1)); } } } /** * 出现异常回调 * * @param exception * @param context * @throws Exception */ @Override public void onException(Exception exception, AnalysisContext context) throws Exception { if (exception instanceof ExcelDataConvertException) { /**从0开始计算*/ Integer columnIndex = ((ExcelDataConvertException) exception).getColumnIndex() + 1; Integer rowIndex = ((ExcelDataConvertException) exception).getRowIndex() + 1; String message = "第" + rowIndex + "行,第" + columnIndex + "列" + "数据格式有误,请核实"; throw new RuntimeException(message); } else if (exception instanceof RuntimeException) { throw exception; } else { super.onException(exception, context); } } @Override public void invokeHeadMap(Map headMap, AnalysisContext context) { // // 检查标题行,headMap 是一个 Map,key 是列索引,value 是列标题 // if (headMap.containsKey(0) && "预期标题".equals(headMap.get(0))) { // 假设预期的标题在第一列 // // } if (headMap==null || headMap.size()!=36){ throw new RuntimeException(String.format("导入文件格式错误,请检查")); } } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { } }