From b764cb1cb5b5fb6261915ab36f0b1171273be1a4 Mon Sep 17 00:00:00 2001 From: RuicyWu <1063154311@qq.com> Date: Sun, 7 Jun 2026 18:12:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=BC=E5=AE=B9=E5=A4=9A=E9=80=89=E6=9E=9A?= =?UTF-8?q?=E4=B8=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/seeyon/utils/form/EnumMapUtils.java | 29 ++++++++++++++++--- .../seeyon/utils/form/FormTableExecutor.java | 19 ++++++++++-- 2 files changed, 42 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/seeyon/utils/form/EnumMapUtils.java b/src/main/java/com/seeyon/utils/form/EnumMapUtils.java index 8359ebe..ee76691 100644 --- a/src/main/java/com/seeyon/utils/form/EnumMapUtils.java +++ b/src/main/java/com/seeyon/utils/form/EnumMapUtils.java @@ -249,12 +249,33 @@ public class EnumMapUtils { if(enumItemId == null) { return null; } - Long temp = enumItemId instanceof Long ? (Long)enumItemId : (enumItemId instanceof String ? Long.parseLong((String)enumItemId) : null); - if(temp == null) { + String str = enumItemId instanceof Long ? String.valueOf(enumItemId) : (enumItemId instanceof String ? (String)enumItemId : null); + if(str == null) { return null; } - EnumManager enumManagerNew = getEnumManager(); - CtpEnumItem ctpEnumItem = enumManagerNew.getCtpEnumItem(temp); + // 多选枚举 逗号分隔 + if(str.contains(",")) { + StringBuilder sb = new StringBuilder(); + for(String id : str.split(",")) { + String showValue = getSingleEnumShowValue(id.trim()); + if(showValue != null) { + if(sb.length() > 0) sb.append(","); + sb.append(showValue); + } + } + return sb.length() > 0 ? sb.toString() : null; + } + return getSingleEnumShowValue(str); + } + + private static String getSingleEnumShowValue(String enumItemId) throws BusinessException { + Long temp; + try { + temp = Long.parseLong(enumItemId); + } catch (NumberFormatException e) { + return null; + } + CtpEnumItem ctpEnumItem = getEnumManager().getCtpEnumItem(temp); if(ctpEnumItem == null) { return null; } diff --git a/src/main/java/com/seeyon/utils/form/FormTableExecutor.java b/src/main/java/com/seeyon/utils/form/FormTableExecutor.java index 2ba4f59..28f2286 100644 --- a/src/main/java/com/seeyon/utils/form/FormTableExecutor.java +++ b/src/main/java/com/seeyon/utils/form/FormTableExecutor.java @@ -339,8 +339,23 @@ public class FormTableExecutor { if (field == null) continue; Object value = e.getValue(); - if (changeEnum && field.isEnumField()) { - value = EnumMapUtils.getEnumShowValue(value); + if (changeEnum && field.isEnumField() && value != null) { + try { + if ("multiselect".equals(field.getInputType())) { + String str = String.valueOf(value); + String[] split = str.split(","); + List showValueList = new ArrayList<>(); + for (String enumId : split) { + String sv = EnumMapUtils.getEnumShowValue(enumId.trim()); + showValueList.add(sv != null ? sv : enumId.trim()); + } + value = showValueList; + } else { + value = EnumMapUtils.getEnumShowValue(value); + } + } catch (Exception ex) { + // 多选枚举等无法解析时保留原值 + } } // 枚举、部门、成员等特殊字段处理 // value = handleFieldSpecialType(field, value);