Browse Source

支持#{CURRENT_DATE_YYYY-MM-DD}F形式

master
han\hanst 5 days ago
parent
commit
d0dc23c480
  1. 80
      src/main/java/com/gaotao/modules/base/service/Impl/LabelDataProcessorServiceImpl.java

80
src/main/java/com/gaotao/modules/base/service/Impl/LabelDataProcessorServiceImpl.java

@ -614,7 +614,7 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
} }
break; break;
case "date": case "date":
return processDateElement(replacedData, element);
return processDateText(originalData, replacedData, element);
case "string": case "string":
return processStringElement(replacedData, element); return processStringElement(replacedData, element);
case "text": case "text":
@ -629,6 +629,25 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
return replacedData; return replacedData;
} }
/**
* 处理日期文本支持"#{CURRENT_DATE_...}后缀"场景
*/
private String processDateText(String originalData, String replacedData, ReportLabelList element) {
// 常规场景替换后是纯日期直接按日期配置处理
String processed = processDateElement(replacedData, element);
if (parseDate(replacedData) != null) {
return processed;
}
// 扩展场景日期系统变量 + 固定前后缀例如 "#{CURRENT_DATE_YYYY-MM-DD}F"
String dateTokenProcessed = replaceCurrentDateTokenWithFormattedDate(originalData, element);
if (!dateTokenProcessed.equals(originalData)) {
return dateTokenProcessed;
}
return processed;
}
/** /**
* 检查元素是否有数字格式化设置 * 检查元素是否有数字格式化设置
*/ */
@ -798,12 +817,60 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
return dateValue; return dateValue;
} }
// 日期偏移处理正数加天负数减天
Integer dateOffsetDays = element.getDateOffsetDays();
date = applyDateOffset(date, element.getDateOffsetDays());
return extractDateByType(date, extractType, element);
} catch (Exception e) {
log.error("日期处理失败: dateValue={}, error={}", dateValue, e.getMessage());
return dateValue;
}
}
/**
* 将日期系统变量替换为按配置格式化后的日期保留前后缀
*/
private String replaceCurrentDateTokenWithFormattedDate(String originalData, ReportLabelList element) {
if (originalData == null || originalData.trim().isEmpty()) {
return originalData;
}
String[] dateTokens = {"#{CURRENT_DATE_YYYY-MM-DD}", "#{CURRENT_DATE_YYYYMMDD}"};
boolean hasDateToken = false;
for (String token : dateTokens) {
if (originalData.contains(token)) {
hasDateToken = true;
break;
}
}
if (!hasDateToken) {
return originalData;
}
String extractType = element.getDateExtractType() != null ? element.getDateExtractType() : "full";
LocalDate currentDate = applyDateOffset(LocalDate.now(), element.getDateOffsetDays());
String formattedCurrentDate = extractDateByType(currentDate, extractType, element);
String result = originalData;
for (String token : dateTokens) {
result = result.replace(token, formattedCurrentDate);
}
return result;
}
/**
* 日期偏移处理正数加天负数减天
*/
private LocalDate applyDateOffset(LocalDate date, Integer dateOffsetDays) {
if (dateOffsetDays != null && dateOffsetDays != 0) { if (dateOffsetDays != null && dateOffsetDays != 0) {
date = date.plusDays(dateOffsetDays.longValue());
return date.plusDays(dateOffsetDays.longValue());
}
return date;
} }
/**
* 按提取类型输出日期文本
*/
private String extractDateByType(LocalDate date, String extractType, ReportLabelList element) {
switch (extractType) { switch (extractType) {
case "year": case "year":
return String.valueOf(date.getYear()); return String.valueOf(date.getYear());
@ -819,11 +886,6 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
default: default:
return formatFullDate(date, element); return formatFullDate(date, element);
} }
} catch (Exception e) {
log.error("日期处理失败: dateValue={}, error={}", dateValue, e.getMessage());
return dateValue;
}
} }
/** /**

Loading…
Cancel
Save