陈昶聿
4 天以前 0d2497f901ac90077e27b085aec820136a158396
合并修改com/ruoyi/quartz/task/RyTacom/ruoyi/quartz/task/RyTask.java:3sk.java:3com/ruoyi/quart/task/RyTask.java:3
已修改2个文件
22 ■■■■■ 文件已修改
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/message/LishuiMessageConfigProviderImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -542,8 +542,12 @@
     * @param dataClazz 数据对象的Class
     */
    @SuppressWarnings("unchecked")
    public void writeAdditionalSheet(List<?> dataList, String sheetName, Class<?> dataClazz) {        if (dataList == null) {
            dataList = new ArrayList<>();
    public void writeAdditionalSheet(List<?> dataList, String sheetName, Class<?> dataClazz) {
        // 没有数据或没有行类型时跳过附加 Sheet:
        // SatisfactionExportBundle.empty() 的 rowClass 为 null,若继续执行会把 this.clazz 置空,
        // 随后 getFields() 调用 clazz.getSuperclass() 触发 NullPointerException。
        if (dataClazz == null || dataList == null || dataList.isEmpty()) {
            return;
        }
        // 保存原始状态
        Class<T> originClazz = this.clazz;
@@ -1341,6 +1345,11 @@
     */
    public List<Object[]> getFields() {
        List<Object[]> fields = new ArrayList<Object[]>();
        // 防御:clazz 为空时不再调用 getSuperclass(),避免 NullPointerException。
        if (clazz == null) {
            log.warn("ExcelUtil.clazz 为空,无法解析导出字段,跳过当前 Sheet");
            return fields;
        }
        List<Field> tempFields = new ArrayList<>();
        tempFields.addAll(Arrays.asList(clazz.getSuperclass().getDeclaredFields()));
        tempFields.addAll(Arrays.asList(clazz.getDeclaredFields()));
smartor/src/main/java/com/smartor/message/LishuiMessageConfigProviderImpl.java
@@ -1,5 +1,6 @@
package com.smartor.message;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.message.sms.provider.ls.LishuiMessageConfig;
@@ -36,6 +37,12 @@
     */
    private static final String CONFIG_KEY = "ls.msg.info";
    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
    private static final TypeReference<Map<String, String>> MSG_INFO_TYPE =
            new TypeReference<Map<String, String>>() {
            };
    private final ISysConfigService configService;
    public LishuiMessageConfigProviderImpl(ISysConfigService configService) {
@@ -60,7 +67,7 @@
        Map<String, String> msgInfo = new HashMap<>();
        if (StringUtils.isNotEmpty(configValue)) {
            try {
                msgInfo = new ObjectMapper().readValue(configValue, Map.class);
                msgInfo = OBJECT_MAPPER.readValue(configValue, MSG_INFO_TYPE);
            } catch (Exception e) {
                log.error("【LishuiMessageConfigProviderImpl】解析 {} 失败,orgid:{},value:{},err:{}",
                        CONFIG_KEY, orgid, configValue, e.getMessage(), e);