1. 设置一个map集合
public Map<String, String> generatePerformanceFeeFyxMap() {
Map<String, String> someMap = new HashMap<>();
someMap.put("14", "hwf");
someMap.put("19", "tdjs");
someMap.put("20", "wljssyf");
someMap.put("23", "fyyClfy");
someMap.put("29", "fyyLqf");
someMap.put("3", "zeroOne");
someMap.put("32", "tjf");
someMap.put("34", "clfZsf");
someMap.put("36", "wlYzf");
someMap.put("4", "zeroTwo");
someMap.put("442", "zeroSix");
someMap.put("444", "jbcf");
someMap.put("46", "clfClbt");
someMap.put("464", "wlClbxf");
someMap.put("465", "wlYf");
someMap.put("468", "wlClltf");
someMap.put("469", "wlClbyf");
someMap.put("472", "wlClwxf");
someMap.put("474", "wlCldxf");
someMap.put("478", "wlLqf");
someMap.put("480", "wlCpf");
someMap.put("481", "wlZxf");
someMap.put("484", "wlGpsSyf");
someMap.put("485", "wlTcf");
someMap.put("487", "wlClsyf");
someMap.put("490", "wlAqscfy");
someMap.put("495", "wlClwzfk");
someMap.put("51", "bgfQt");
someMap.put("522", "itSbzlf");
someMap.put("545", "clfHcp");
someMap.put("547", "clfBzcl");
someMap.put("548", "clfSnjt");
someMap.put("56", "dzyhp");
someMap.put("563", "clf");
someMap.put("58", "dhf");
someMap.put("604", "zdf");
someMap.put("615", "wxf");
someMap.put("62", "flf");
someMap.put("644", "wlFz");
someMap.put("645", "wlSdf");
someMap.put("647", "wlhcfQt");
someMap.put("651", "wlhcf");
someMap.put("658", "bgfKdf");
someMap.put("659", "bgf");
someMap.put("665", "grfz");
someMap.put("683", "wlClzlf");
someMap.put("773", "fyLdbhf");
someMap.put("804", "lzbc");
someMap.put("90", "gpsTyf");
someMap.put("96", "zgjyjf");
return someMap;
}
1. 通过反射获得值
public Object getFieldValueByName(Object o, String fieldName) {
try {
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String getter = "get" + firstLetter + fieldName.substring(1);
Method method = o.getClass().getMethod(getter, new Class[]{});
Object value = method.invoke(o, new Object[]{});
return value;
} catch (Exception e) {
System.out.println(e.getMessage());
return null;
}
}
2. 调用获得值
public BigDecimal generatePerformanceTotalExpenses(WaterFeeBusinessUnit waterFeeBusinessUnitInfo) {
BigDecimal total = BigDecimal.ZERO;
Map<String, String> map = generatePerformanceFeeFyxMap();
for (String key : map.keySet()) {
Object fieldValueByName = getFieldValueByName(waterFeeBusinessUnitInfo, map.get(key));
if (fieldValueByName != null) {
BigDecimal number = (BigDecimal) fieldValueByName;
total = total.add(number);
}
}
return total;
}
3. 通过反射获取值
public Object setFieldValueByName(Object obj, String fieldName, Object value) {
try {
Class c = obj.getClass();
Field f = c.getDeclaredField(fieldName);
f.setAccessible(true);
f.set(obj, value);
} catch (Exception e) {
System.out.println(e.getMessage());
}
return obj;
}
4. 调用设置值
public WaterFeeBusinessUnit generatePerformanceFeeFyxType(List<FeeFyx> feeFyxeList, WaterFeeBusinessUnit waterFeeBusinessUnit) {
Map<String, String> map = generatePerformanceFeeFyxMap();
for (String key : map.keySet()) {
System.out.println("key= " + key + " and value= " + map.get(key));
List<FeeFyx> comps = feeFyxeList.stream().filter(p -> p.getSapFyitemid() != null && p.getSapFyitemid().equals(key)).collect(Collectors.toList());
BigDecimal sumFyline = comps.stream().filter(FeeFyx -> FeeFyx.getFyline() != null).map(FeeFyx::getFyline).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(4, BigDecimal.ROUND_HALF_UP);
Object o = setFieldValueByName(waterFeeBusinessUnit, map.get(key), sumFyline.add(fyLine));
waterFeeBusinessUnit = (WaterFeeBusinessUnit) o;
waterFeeBusinessUnit.setStatus(waterFeeBusinessUnitmUncertainFy.getStatus());
waterFeeBusinessUnit.setRemark(waterFeeBusinessUnitmUncertainFy.getRemark());
}
return waterFeeBusinessUnit;
}