//判断字段是否存在 MetaFieldInfo metaFieldInfo = metaFieldInfoRepository.findByFieldId(fieldId); if (metaFieldInfo == null) { LOG.error("通过SQL插入字典值错误:该字段不存在"); return null; } //如果有则视为更新,先删除再插入 List<MetaFieldValueDic> metaFieldValueDics = metaFieldValueDicRepository.findAllByFieldId(fieldId); if (metaFieldValueDics.size() > 0) { metaFieldValueDicRepository.deleteAllByFieldId(fieldId); } //插入字典 String st = sql.replaceAll("'", "''"); SqlRowSet res = greenplumJdbcTemplate.queryForRowSet(sql); System.out.println(res); int columnCount = res.getMetaData().getColumnCount(); if (columnCount != 2) { LOG.error("通过SQL插入字典值错误:SQL查询结果列数不为2"); return null; } while (res.next()) { //判断是否已存在该key值 MetaFieldValueDic fieldValueDicOld = metaFieldValueDicRepository.findMetaFieldValueDicByFieldIdAndFieldValue(fieldId, res.getString(1)); if (fieldValueDicOld != null) { throw new Exception("新增字典异常:字典值已存在"); }
时间: 2024-03-29 12:40:18 浏览: 74
这段代码继续对参数进行判断,判断字段是否存在,如果不存在则会抛出异常并返回null。如果字段存在,则会将该字段下的所有字典值全部删除。然后执行SQL插入字典值操作,并对SQL查询结果的列数进行判断,如果不为2则会抛出异常并返回null。接着遍历结果集,判断是否已存在该key值,如果已存在则会抛出异常并返回null。这些操作都是为了保证插入的字典值合法、唯一性,以保证系统正常运行。您还有其他问题吗?
相关问题
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 也设置为表单字段的数据。
解释 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`。
最终,可以得到该表单项填写的各个选项的值和标签列表。
阅读全文