if (originalData.get(fieldId) instanceof Collection) { List<Object> fieldValues = MapUtil.get(originalData, fieldId, List.class); List<String> fieldLabelValues = MapUtil.get(originalData, fieldId + "label", List.class); for (int i = 0; i < fieldValues.size(); i++) { // 是否是其他输入 Object value = fieldValues.get(i); String label = value.equals(0) ? "其他" : fieldLabelValues.get(i); Integer count = labelCountMap.get(label); labelCountMap.put(label.trim(), ObjectUtil.isNotNull(count) ? count + 1 : 1); } } else { String label = MapUtil.getStr(originalData, fieldId + "label"); Integer count = labelCountMap.get(label); labelCountMap.put(label, ObjectUtil.isNotNull(count) ? count + 1 : 1); } }
时间: 2024-02-10 12:22:19 浏览: 70
这段代码是对多选题的选项进行处理的逻辑。如果原始数据中指定的字段(fieldId)对应的值是一个集合(instanceof Collection),则会遍历集合中的每个元素,并将对应的标签(fieldLabelValues)及出现次数记录在一个名为 labelCountMap 的 Map 中。注意,如果集合中的元素值等于 0,表示这是“其他”选项,需要将其标签设置为“其他”。如果原始数据中指定的字段对应的值不是一个集合,则直接将该值对应的标签及出现次数记录在 labelCountMap 中。最后,将 labelCountMap 中的键值对分别设置为表单字段的名称和数据,同时将整个 Map 也设置为表单字段的数据。
相关问题
解释 if (originalData.containsKey(fieldId)) { // 结果中字段值 处理多选 if (originalData.get(fieldId) instanceof Collection) { List<Object> fieldValues = MapUtil.get(originalData, fieldId, List.class); List<String> fieldLabelValues = MapUtil.get(originalData, fieldId + "label", List.class);
这段代码主要是对表单项的原始数据进行处理,检查该表单项的原始数据 `originalData` 中是否包含当前遍历到的表单项 id `fieldId`。如果包含,则说明该表单项的数据已经填写过了,需要对其进行分析。
具体来说,首先在 `originalData` 中检查是否包含当前遍历到的表单项 id `fieldId`,如果包含,则说明该表单项的数据已经填写过了,需要对其进行分析。
然后,判断该表单项是否为多选类型。如果是多选类型,则需要将其选项的值和标签分别提取出来,分别存储在 `fieldValues` 和 `fieldLabelValues` 列表中。这里使用 `MapUtil.get` 方法从 `originalData` 中获取对应的数据,并指定其类型为 `List`。
最终,可以得到该表单项填写的各个选项的值和标签列表。
if (originalData.containsKey(fieldId)) { // 结果中字段值 处理多选 if (originalData.get(fieldId) instanceof Collection) { List<Object> fieldValues = MapUtil.get(originalData, fieldId, List.class); List<String> fieldLabelValues = MapUtil.get(originalData, fieldId + "label", List.class); for (int i = 0; i < fieldValues.size(); i++) { // 是否是其他输入 Object value = fieldValues.get(i); String label = value.equals(0) ? "其他" : fieldLabelValues.get(i); Integer count = labelCountMap.get(label); labelCountMap.put(label.trim(), ObjectUtil.isNotNull(count) ? count + 1 : 1); } } else { String label = MapUtil.getStr(originalData, fieldId + "label"); Integer count = labelCountMap.get(label); labelCountMap.put(label, ObjectUtil.isNotNull(count) ? count + 1 : 1); } } formMap.get(fieldId).setFieldName(labelCountMap.keySet()); formMap.get(fieldId).setData(labelCountMap.values()); formMap.get(fieldId).setMap(labelCountMap); }
这是一段 Java 代码,其中包含了对多选题结果进行处理的逻辑。如果原始数据中包含了指定的字段(fieldId),就会根据数据类型进行不同的处理。如果是一个集合类型,则遍历集合中的每个元素,将其对应的标签(label)以及出现次数记录在一个 Map 中;否则,直接将标签和出现次数记录在 Map 中。最后,将 Map 中的键值对分别设置为表单字段的名称和数据,同时将整个 Map 也设置为表单字段的数据。
阅读全文