diff --git a/fizz-core/src/main/java/we/fizz/function/ListFunc.java b/fizz-core/src/main/java/we/fizz/function/ListFunc.java index 0c0e494..fa035ee 100644 --- a/fizz-core/src/main/java/we/fizz/function/ListFunc.java +++ b/fizz-core/src/main/java/we/fizz/function/ListFunc.java @@ -148,24 +148,24 @@ public class ListFunc implements IFunc { joinFields = new String[] {joinField, joinField}; } Map> index = new HashMap<>(); - for (Map record : dest) { - if (record.get(joinFields[0]) != null) { - index.put(record.get(joinFields[0]).toString(), record); + for (Map item : src) { + if (item.get(joinFields[1]) != null) { + index.putIfAbsent(item.get(joinFields[1]).toString(), item); } } - for (Map m : src) { - Object srcJoinFieldVal = m.get(joinFields[1]); + for (Map m : dest) { + Object srcJoinFieldVal = m.get(joinFields[0]); if (srcJoinFieldVal == null || !index.containsKey(srcJoinFieldVal.toString())) { continue; } Map record = index.get(srcJoinFieldVal.toString()); if (fields == null || fields.length == 0) { - record.putAll(m); + m.putAll(record); } else { for (String field : fields) { - record.put(field, m.get(field)); + m.put(field, record.get(field)); } } diff --git a/fizz-core/src/test/java/we/fizz/function/ListFuncTests.java b/fizz-core/src/test/java/we/fizz/function/ListFuncTests.java index b028abc..f816e4e 100644 --- a/fizz-core/src/test/java/we/fizz/function/ListFuncTests.java +++ b/fizz-core/src/test/java/we/fizz/function/ListFuncTests.java @@ -187,6 +187,16 @@ class ListFuncTests { + " \"itemVal\": 0.7040,\n" + " \"itemNm\": \"balance rate\",\n" + " \"valueStr\": \"0.7040\",\n" + + " \"orgCd1\": \"230009999\"\n" + + " },\n" + + " {\n" + + " \"itemType\": \"3\",\n" + + " \"currCd\": \"156\",\n" + + " \"batchDate\": \"20190331\",\n" + + " \"itemCd\": \"ORGAP0008\",\n" + + " \"itemVal\": 0.7040,\n" + + " \"itemNm\": \"balance rate\",\n" + + " \"valueStr\": \"0.7040\",\n" + " \"orgCd1\": \"231009999\"\n" + " }\n" + " ]";