From 9fdf77d7fde3c88e9ce06f17f3a7799efef40889 Mon Sep 17 00:00:00 2001 From: "han\\hanst" Date: Mon, 18 Aug 2025 10:10:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=BE=E7=89=87=E4=B8=8D=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Impl/LabelDataProcessorServiceImpl.java | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/src/main/java/com/gaotao/modules/base/service/Impl/LabelDataProcessorServiceImpl.java b/src/main/java/com/gaotao/modules/base/service/Impl/LabelDataProcessorServiceImpl.java index 291e330..e204934 100644 --- a/src/main/java/com/gaotao/modules/base/service/Impl/LabelDataProcessorServiceImpl.java +++ b/src/main/java/com/gaotao/modules/base/service/Impl/LabelDataProcessorServiceImpl.java @@ -47,6 +47,15 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService List processedElements = new ArrayList<>(); for (ReportLabelList element : elements) { ReportLabelList processedElement = processElementData(element, dataMap); + + // 如果是图片元素且被设置为不显示,则跳过该元素 + if (("image".equals(element.getType()) || "picture".equals(element.getType())) + && processedElement.getData().isEmpty() + && BigDecimal.ZERO.equals(processedElement.getWidth())) { + log.debug("跳过不显示的图片元素: type={}, showPic={}", element.getType(), element.getShowPic()); + continue; + } + processedElements.add(processedElement); } @@ -65,6 +74,18 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService String originalData = element.getData(); log.debug("处理元素数据: type={}, originalData={}", element.getType(), originalData); + // 处理图片元素的显示控制 + if ("pic".equals(element.getType())) { + if (!shouldShowPicture(element, dataMap)) { + log.debug("根据showPic设置,隐藏图片元素: showPic={}", element.getShowPic()); + // 返回null或设置特殊标记表示不显示该元素 + processedElement.setData(""); + processedElement.setWidth(BigDecimal.ZERO); + processedElement.setHeight(0); + return processedElement; + } + } + // 处理不同类型的元素 switch (element.getType()) { case "text": @@ -77,6 +98,11 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService case "serialNumber": // 流水号元素通常不需要数据替换,保持原样 break; + case "image": + case "picture": + // 图片元素,替换数据源字段(如果有的话) + processedElement.setData(replaceDataSourceFields(originalData, dataMap)); + break; default: processedElement.setData(replaceDataSourceFields(originalData, dataMap)); break; @@ -532,6 +558,65 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService return value.replace(from, to); } + /** + * 判断是否应该显示图片 + * 根据showPic设置和数据源中的字段值进行判断 + * showPic格式: "fieldName=value",如果数据源中fieldName的值等于value,则不显示图片 + * + * @param element 图片元素 + * @param dataMap 数据源映射 + * @return true表示显示图片,false表示不显示图片 + */ + private boolean shouldShowPicture(ReportLabelList element, Map dataMap) { + String showPic = element.getShowPic(); + + // 如果showPic为空或null,默认显示图片 + if (showPic == null || showPic.trim().isEmpty()) { + log.debug("showPic为空,默认显示图片"); + return true; + } + + // 如果showPic是"true"或"Y",显示图片 + if ("true".equalsIgnoreCase(showPic.trim()) || "Y".equalsIgnoreCase(showPic.trim())) { + log.debug("showPic设置为显示: {}", showPic); + return true; + } + + // 如果showPic是"false"或"N",不显示图片 + if ("false".equalsIgnoreCase(showPic.trim()) || "N".equalsIgnoreCase(showPic.trim())) { + log.debug("showPic设置为不显示: {}", showPic); + return false; + } + + // 解析showPic格式: "fieldName=value" + if (showPic.contains("=")) { + String[] parts = showPic.split("=", 2); + if (parts.length == 2) { + String fieldName = parts[0].trim(); + String expectedValue = parts[1].trim(); + + // 从数据源中获取字段值 + Object actualValue = dataMap.get(fieldName); + String actualValueStr = actualValue != null ? actualValue.toString().trim() : ""; + + log.debug("检查图片显示条件: 字段名={}, 期望值={}, 实际值={}", fieldName, expectedValue, actualValueStr); + + // 如果实际值等于期望值,则不显示图片 + if (expectedValue.equals(actualValueStr)) { + log.debug("字段值匹配期望值,不显示图片: {}={}", fieldName, expectedValue); + return false; + } else { + log.debug("字段值不匹配期望值,显示图片: {}!={}", actualValueStr, expectedValue); + return true; + } + } + } + + // 其他情况默认显示图片 + log.debug("showPic格式无法识别,默认显示图片: {}", showPic); + return true; + } + /** * 复制元素对象 */