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);}}
- 这只是一部分代码,不能直接运行