java实体类中多个字段要判断条件是否成立,需要一个一个写,可以通过数据库将对应字段存储,然后通过循环的方式去判断,减少代码冗余
public void AssaysAlO(){
List<AssaysAlarm> list = Lists.newArrayList();
List<AssaysAlo> assaysAlos = assaysAloMapper.selectAssaysAloList();
List<AssaysAlarmRule> assaysAlarmRules = assaysAlarmRuleMapper.selectList(new QueryWrapper<AssaysAlarmRule>()
.eq("table_name", "assays_alo"));
if (CollUtil.isNotEmpty(assaysAlos)){
assaysAlos.forEach(assaysAloVo -> {
for (AssaysAlarmRule assaysAlarmRule:assaysAlarmRules){
String name =assaysAlarmRule.getFieldName();
try {
Field declaredField = assaysAloVo.getClass().getDeclaredField(name);
declaredField.setAccessible(true);//这里必须设置为true,否则会报私有方法错下面取值
BigDecimal val1 = new BigDecimal( declaredField.get(assaysAloVo).toString());//获取对应的值
if ((CommonUtils.isNotNull(assaysAlarmRule.getVMax())
&& NumberUtil.isGreater(val1,BigDecimal.valueOf(assaysAlarmRule.getVMax())))
||(CommonUtils.isNotNull(assaysAlarmRule.getVMin())
&&NumberUtil.isLess(val1,BigDecimal.valueOf(assaysAlarmRule.getVMin())))){
AssaysAlarm assaysAlarm = new AssaysAlarm();
assaysAlarm.setAlarmTitle(assaysAlarmRule.getAlarmTitle());
list.add(assaysAlarm);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
});
baseMapper.insertBatch(list);
}
}
- 这只是一部分代码,不能直接运行