From ce67cb0af5441d2150ce571ab66f5081669a0ab4 Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Fri, 21 Nov 2025 14:20:19 +0800 Subject: [PATCH] =?UTF-8?q?11.21=20bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/config/BackpackGiftConverter.java | 42 +++++++++++++++ .../demo/config/MemberTypeStringConverter.java | 51 ++++++++++++++++++ .../com/example/demo/config/YesNoConverter.java | 61 ++++++++++++++++++++++ .../demo/domain/vo/bean/BeanConsumeFan.java | 3 +- .../demo/domain/vo/bean/BeanConsumeLive.java | 4 +- src/main/resources/cashMapper/CashRefundMapper.xml | 10 ++-- 6 files changed, 164 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/example/demo/config/BackpackGiftConverter.java create mode 100644 src/main/java/com/example/demo/config/MemberTypeStringConverter.java create mode 100644 src/main/java/com/example/demo/config/YesNoConverter.java diff --git a/src/main/java/com/example/demo/config/BackpackGiftConverter.java b/src/main/java/com/example/demo/config/BackpackGiftConverter.java new file mode 100644 index 0000000..ab9def2 --- /dev/null +++ b/src/main/java/com/example/demo/config/BackpackGiftConverter.java @@ -0,0 +1,42 @@ +package com.example.demo.config; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; + +// 语义化命名:一看就知道用途 +public class BackpackGiftConverter implements Converter { + + @Override + public Class supportJavaTypeKey() { + return Integer.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + @Override + public WriteCellData convertToExcelData( + Integer value, + ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) { + return new WriteCellData<>((value != null && value == 1) ? "是" : "否"); + } + + // 可选:支持反向导入 + @Override + public Integer convertToJavaData( + ReadCellData cellData, + ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) { + String str = cellData.getStringValue(); + if ("是".equals(str)) return 1; + if ("否".equals(str)) return 0; + return null; + } +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/config/MemberTypeStringConverter.java b/src/main/java/com/example/demo/config/MemberTypeStringConverter.java new file mode 100644 index 0000000..027ff6a --- /dev/null +++ b/src/main/java/com/example/demo/config/MemberTypeStringConverter.java @@ -0,0 +1,51 @@ +package com.example.demo.config; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; + +public class MemberTypeStringConverter implements Converter { + + @Override + public Class supportJavaTypeKey() { + return String.class; // ✅ 关键:支持 String 类型 + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + @Override + public WriteCellData convertToExcelData( + String value, // value 是 "7" 或 "8" + ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) { + + // 映射逻辑 + String display; + if ("7".equals(value)) { + display = "单次付费"; + } else if ("8".equals(value)) { + display = "连续包月"; + } else { + display = value != null ? "未知(" + value + ")" : ""; + } + return new WriteCellData<>(display); + } + + // 【可选】支持从 Excel 读回(如需导入) + @Override + public String convertToJavaData( + ReadCellData cellData, + ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) { + String str = cellData.getStringValue(); + if ("单次付费".equals(str)) return "7"; + if ("连续包月".equals(str)) return "8"; + return str; // 原样返回或 throw + } +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/config/YesNoConverter.java b/src/main/java/com/example/demo/config/YesNoConverter.java new file mode 100644 index 0000000..bb5af0d --- /dev/null +++ b/src/main/java/com/example/demo/config/YesNoConverter.java @@ -0,0 +1,61 @@ +package com.example.demo.config; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; + +/** + * EasyExcel 0→否、1→是 转换器(String类型) + */ +public class YesNoConverter implements Converter { + + /** + * 指定转换器处理的Java类型(String) + */ + @Override + public Class supportJavaTypeKey() { + return String.class; + } + + /** + * 指定Excel单元格数据类型(字符串) + */ + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + /** + * Java对象 → Excel显示值(导出时调用) + * 0→否,1→是,其他值保持原样 + */ + @Override + public WriteCellData convertToExcelData(String value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { + if ("0".equals(value)) { + return new WriteCellData<>("否"); + } else if ("1".equals(value)) { + return new WriteCellData<>("是"); + } + // 非0/1值直接返回(避免空指针) + return new WriteCellData<>(value == null ? "" : value); + } + + /** + * Excel值 → Java对象(导入时调用,可选实现) + * 否→0,是→1,其他值保持原样 + */ + @Override + public String convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { + String value = cellData.getStringValue(); + if ("否".equals(value)) { + return "0"; + } else if ("是".equals(value)) { + return "1"; + } + // 非是/否值直接返回 + return value == null ? "" : value; + } +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeFan.java b/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeFan.java index 8ca5277..fa0bc9a 100644 --- a/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeFan.java +++ b/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeFan.java @@ -2,6 +2,7 @@ package com.example.demo.domain.vo.bean; import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; +import com.example.demo.config.MemberTypeStringConverter; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.Data; @@ -38,7 +39,7 @@ public class BeanConsumeFan { private String buyBean; //付费金豆 @ExcelProperty("频道") private String channel; //频道名称(source_name) - @ExcelProperty("会员类型 7-单次付费 8-连续包月") + @ExcelProperty(value = "会员类型", converter = MemberTypeStringConverter.class) private String type; //类型source_type 7单月,8连续包月 //@ExcelProperty("支付方式") @ExcelIgnore diff --git a/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeLive.java b/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeLive.java index f39d893..6d90209 100644 --- a/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeLive.java +++ b/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeLive.java @@ -3,6 +3,8 @@ package com.example.demo.domain.vo.bean; import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; +import com.example.demo.Export.RefundConverter; +import com.example.demo.config.YesNoConverter; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.Data; @@ -41,7 +43,7 @@ public class BeanConsumeLive { private String type; //类型 @ExcelProperty("礼物") private String gift; //礼物名称 - @ExcelProperty("是否为背包礼物 0-否 1-是") + @ExcelProperty(value = "是否为背包礼物", converter = YesNoConverter.class) private String isBackpack; @ExcelProperty("金豆数量") private String beanNum; //金豆数量 diff --git a/src/main/resources/cashMapper/CashRefundMapper.xml b/src/main/resources/cashMapper/CashRefundMapper.xml index 86ae2a5..3f995aa 100644 --- a/src/main/resources/cashMapper/CashRefundMapper.xml +++ b/src/main/resources/cashMapper/CashRefundMapper.xml @@ -361,16 +361,16 @@ #{goodsNames} - + AND crr.refund_currency = #{refundCurrency} - and crc.refund_channels = #{refundChannels} + and crr.refund_channels = #{refundChannels} - - and crc.`refund_time` BETWEEN #{startTime} AND #{endTime} + + and crr.`refund_time` BETWEEN #{sTime} AND #{eTime} - + and crr.executor = #{executor}