增强for循环遍历一个从数据库查出来的集合,会卡住,就是一进去就会卡住,然后debug调试报错:cannot find local variable list
请求解惑呀,第一次遇见这种问题:
一下是代码
@Scheduled(cron = "0/20 * * * * ?")
public void test() throws ParseException {
//报错在下面检查计量处
System.out.println("定时任务开启");
//检查证件是否临期
List<SelCertTimeDto> selCertTimeDtos = facilityInfoDao.selCertTime();
ArrayList<CardEarlyInfo> cardEarlyInfos = new ArrayList<>();
for (SelCertTimeDto message : selCertTimeDtos) {
System.out.println("检查证件");
CardEarlyInfo cardEarlyInfo = BeanCopyUtil.copyObject(message, CardEarlyInfo.class);
//证件状态 键为证件类型 0注册证 1许可证 2合格证 1,值为状态 0设备临期,1设备超期
//注册证
if(message.getRegisterEndTime().before(new Date())){//超期了 注册证号 注册证有效期截止在当前日期之前
cardEarlyInfo.setEarlyTime(new Date());
cardEarlyInfo.setState(1);
cardEarlyInfos.add(cardEarlyInfo);
continue;
}else {
long time = message.getRegisterEndTime().getTime();//到期时间
long time1 = new Date().getTime();
long l = (time - time1) / (1000L * 60 * 60 * 24);
if(l<30){
cardEarlyInfo.setEarlyTime(new Date());
cardEarlyInfo.setState(0);
cardEarlyInfos.add(cardEarlyInfo);
continue;
}
}
//
// //许可证
if(message.getProductionEndTime().before(new Date())){//超期了 注册证号
cardEarlyInfo.setEarlyTime(new Date());
cardEarlyInfo.setState(1);
cardEarlyInfos.add(cardEarlyInfo);
continue;
}else {
long time = message.getProductionEndTime().getTime();//到期时间
long time1 = new Date().getTime();
long l = (time - time1) / (1000L * 60 * 60 * 24);
if(l<30){
cardEarlyInfo.setEarlyTime(new Date());
cardEarlyInfo.setState(0);
cardEarlyInfos.add(cardEarlyInfo);
continue;
}
}
// //合格证
if(message.getQualifiedEndTime().before(new Date())){//超期了 注册证号
cardEarlyInfo.setEarlyTime(new Date());
cardEarlyInfo.setState(1);
cardEarlyInfos.add(cardEarlyInfo);
continue;
}else {
long time = message.getQualifiedEndTime().getTime();//到期时间
long time1 = new Date().getTime();
long l = (time - time1) / (1000L * 60 * 60 * 24);
if(l<30){
cardEarlyInfo.setEarlyTime(new Date());
cardEarlyInfo.setState(0);
cardEarlyInfos.add(cardEarlyInfo);
continue;
}
}
}
List<CheckEarlyDto> checkEarlyInfos = facilityDetailInfoDao.checkEarly();
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
List<CheckEarlyInfo> list = new ArrayList<>();
for (CheckEarlyDto info : checkEarlyInfos) {
System.out.println("检查计量"); //代码在这里卡住不报错,debug才可以看见报错信息
String checkTime = info.getCheckTime();
if(checkTime==null){
checkTime=info.getAllocateTime();
}
Date parse = sd.parse(checkTime);
//下一次检查日期
Date nextCheckTime = DateUtil.getNextMonthDate(sd.parse(info.getCheckTime()), info.getFacilityCheckPeriod() == 0 ? 1 : (info.getFacilityCheckPeriod() == 1 ? 3 : 12));
CheckEarlyInfo checkEarlyInfo = BeanCopyUtil.copyObject(info, CheckEarlyInfo.class);
if(nextCheckTime.before(new Date())){//超期
checkEarlyInfo.setState(1);
checkEarlyInfo.setEarlyTime(new Date());
list.add(checkEarlyInfo);
}else{
long time = new Date().getTime();
long time1 = nextCheckTime.getTime();
long l = (time1 - time) / (1000L * 60 * 60 * 24);//求出剩余天数
if(l<30){
checkEarlyInfo.setState(0);
checkEarlyInfo.setEarlyTime(new Date());
list.add(checkEarlyInfo);
}
}
System.out.println("list");
}
//保存计量预警
if(list.size()!=0){
System.out.println("保存计量预警");
checkEarlyInfoService.saveBatch(list);
}