Showing
5 changed files
with
77 additions
and
5 deletions
... | ... | @@ -20,7 +20,7 @@ import java.util.Date; |
20 | 20 | @Builder |
21 | 21 | @NoArgsConstructor |
22 | 22 | @AllArgsConstructor |
23 | -public class CaseExcelData implements Serializable { | |
23 | +public class CaseExcelData implements Serializable { | |
24 | 24 | private static final long serialVersionUID = 1L; |
25 | 25 | |
26 | 26 | @ExcelCheck(canEmpty = false, canRepeat = false) |
... | ... | @@ -47,13 +47,13 @@ public class CaseExcelData implements Serializable { |
47 | 47 | @ColumnWidth(25) |
48 | 48 | private String caseDetail; |
49 | 49 | |
50 | - @ExcelCheck(canEmpty = false) | |
50 | + @ExcelCheck(canEmpty = false, dateFormatValid = "yyyy-MM-dd HH:mm:ss") | |
51 | 51 | @ExcelProperty(value = "接警时间", index = 4) |
52 | 52 | @ContentStyle(dataFormat = 49) |
53 | 53 | @ColumnWidth(25) |
54 | 54 | private Date alarmDate; |
55 | 55 | |
56 | - @ExcelCheck(canEmpty = false) | |
56 | + @ExcelCheck(canEmpty = false, dateFormatValid = "yyyy-MM-dd HH:mm:ss") | |
57 | 57 | @ExcelProperty(value = "立案时间", index = 5) |
58 | 58 | @ContentStyle(dataFormat = 49) |
59 | 59 | @ColumnWidth(25) | ... | ... |
... | ... | @@ -35,7 +35,7 @@ public class WarningInstanceExcelData implements Serializable { |
35 | 35 | @ColumnWidth(25) |
36 | 36 | private Date alarmDate; |
37 | 37 | |
38 | - @ExcelCheck(canEmpty = false) | |
38 | + @ExcelCheck(canEmpty = false, dateFormatValid = "yyyy-MM-dd HH:mm:ss") | |
39 | 39 | @ExcelProperty(value = "报警电话", index = 2) |
40 | 40 | @ContentStyle(dataFormat = 49) |
41 | 41 | @ColumnWidth(25) | ... | ... |
... | ... | @@ -22,6 +22,8 @@ import org.apache.commons.collections.CollectionUtils; |
22 | 22 | import org.apache.commons.lang3.StringUtils; |
23 | 23 | |
24 | 24 | import java.lang.reflect.Field; |
25 | +import java.text.ParseException; | |
26 | +import java.text.SimpleDateFormat; | |
25 | 27 | import java.util.*; |
26 | 28 | import java.util.concurrent.*; |
27 | 29 | import java.util.stream.Collectors; |
... | ... | @@ -29,7 +31,7 @@ import java.util.stream.Stream; |
29 | 31 | |
30 | 32 | @Slf4j |
31 | 33 | public class CaseExcelListener extends AnalysisEventListener<CaseExcelData> |
32 | - implements ReadListener<CaseExcelData>{ | |
34 | + implements ReadListener<CaseExcelData> { | |
33 | 35 | |
34 | 36 | private List<CaseExcelData> list = Collections.synchronizedList(new ArrayList<>()); |
35 | 37 | |
... | ... | @@ -106,10 +108,13 @@ public class CaseExcelListener extends AnalysisEventListener<CaseExcelData> |
106 | 108 | try { |
107 | 109 | // 校验是否空值 |
108 | 110 | checkEmpty(data, rowIndex); |
111 | + // 校验时间类型 | |
112 | + checkDate(data, rowIndex); | |
109 | 113 | // 校验长度 |
110 | 114 | checkLength(data, rowIndex); |
111 | 115 | } catch (Exception e) { |
112 | 116 | log.error("校验excel信息失败,", e); |
117 | + addError(0, "导入异常"); | |
113 | 118 | } |
114 | 119 | } |
115 | 120 | |
... | ... | @@ -182,6 +187,35 @@ public class CaseExcelListener extends AnalysisEventListener<CaseExcelData> |
182 | 187 | })); |
183 | 188 | } |
184 | 189 | |
190 | + /** | |
191 | + * 检验时间格式 | |
192 | + * | |
193 | + * @param data 数据 | |
194 | + * @param rowIndex 行索引 | |
195 | + */ | |
196 | + public void checkDate(CaseExcelData data, Integer rowIndex) { | |
197 | + fieldMap.forEach(((field, annotation) -> { | |
198 | + ExcelCheck excelCheck = annotation.getExcelCheck(); | |
199 | + try { | |
200 | + Object value = field.get(data); | |
201 | + //校验非空 | |
202 | + if (StringUtils.isNotBlank(excelCheck.dateFormatValid())) { | |
203 | + try { | |
204 | + SimpleDateFormat format = new SimpleDateFormat(excelCheck.dateFormatValid()); | |
205 | + format.setLenient(false); | |
206 | + format.parse(format.format(value.toString())); | |
207 | + | |
208 | + } catch (Exception e) { | |
209 | + addError(rowIndex + 1, annotation.getHeadName() + "时间格式错误!"); | |
210 | + } | |
211 | + } | |
212 | + } catch (IllegalAccessException e) { | |
213 | + log.error("校验excel信息失败,", e); | |
214 | + throw new RuntimeException(e); | |
215 | + } | |
216 | + })); | |
217 | + } | |
218 | + | |
185 | 219 | |
186 | 220 | /** |
187 | 221 | * 校验长度 | ... | ... |
... | ... | @@ -23,6 +23,7 @@ import org.apache.commons.lang3.StringUtils; |
23 | 23 | import org.springframework.stereotype.Service; |
24 | 24 | |
25 | 25 | import java.lang.reflect.Field; |
26 | +import java.text.SimpleDateFormat; | |
26 | 27 | import java.util.*; |
27 | 28 | import java.util.concurrent.*; |
28 | 29 | import java.util.stream.Collectors; |
... | ... | @@ -108,6 +109,8 @@ public class WarningInstanceExcelListener extends AnalysisEventListener<WarningI |
108 | 109 | try { |
109 | 110 | // 校验是否空值 |
110 | 111 | checkEmpty(data, rowIndex); |
112 | + // 校验时间类型 | |
113 | + checkDate(data, rowIndex); | |
111 | 114 | // 校验长度 |
112 | 115 | checkLength(data, rowIndex); |
113 | 116 | } catch (Exception e) { |
... | ... | @@ -189,6 +192,36 @@ public class WarningInstanceExcelListener extends AnalysisEventListener<WarningI |
189 | 192 | |
190 | 193 | |
191 | 194 | /** |
195 | + * 检验时间格式 | |
196 | + * | |
197 | + * @param data 数据 | |
198 | + * @param rowIndex 行索引 | |
199 | + */ | |
200 | + public void checkDate(WarningInstanceExcelData data, Integer rowIndex) { | |
201 | + fieldMap.forEach(((field, annotation) -> { | |
202 | + ExcelCheck excelCheck = annotation.getExcelCheck(); | |
203 | + try { | |
204 | + Object value = field.get(data); | |
205 | + //校验非空 | |
206 | + if (StringUtils.isNotBlank(excelCheck.dateFormatValid())) { | |
207 | + try { | |
208 | + SimpleDateFormat format = new SimpleDateFormat(excelCheck.dateFormatValid()); | |
209 | + format.setLenient(false); | |
210 | + format.parse(format.format(value.toString())); | |
211 | + | |
212 | + } catch (Exception e) { | |
213 | + addError(rowIndex + 1, annotation.getHeadName() + "时间格式错误!"); | |
214 | + } | |
215 | + } | |
216 | + } catch (IllegalAccessException e) { | |
217 | + log.error("校验excel信息失败,", e); | |
218 | + throw new RuntimeException(e); | |
219 | + } | |
220 | + })); | |
221 | + } | |
222 | + | |
223 | + | |
224 | + /** | |
192 | 225 | * 校验长度 |
193 | 226 | * |
194 | 227 | * @param data 数据 | ... | ... |