目录
本文只记录大致思路以及做法,代码不进行详细输出
场景:
模板导出
1.按照模板内容类型分组(分sheet):1.文本消息;2.文本卡片;3.富文本;4.图文
2.每个类型的动态参数不同,即为每个sheet的表头不同
一、效果展示
二、代码实现
1.固定头实体类
@Data
@ApiModel
@ExcelIgnoreUnannotated
// @HeadRowHeight(value = 50)
// @ContentRowHeight(value = 50)
@ColumnWidth(value = 20)
public class MsgModuleInfoDTO {
@ApiModelProperty(value = "模板id")
private Long id;
@ApiModelProperty(value = "模板ids")
private List<Long> ids;
@ApiModelProperty(value = "模板编码")
@ExcelProperty(value = "模板编码")
private String code;
@ApiModelProperty(value = "模板名称")
@ExcelProperty(value = "模板名称")
private String name;
@ApiModelProperty(value = "模板关联的渠道内容类型Code")
private String contentTypeCode;
@ApiModelProperty(value = "模板关联的渠道内容类型Value")
@ExcelProperty(value = "内容类型")
private String contentTypeValue;
@ApiModelProperty(value = "业务场景")
@ExcelProperty(value = "业务场景")
private String condition;
@ApiModelProperty(value = "所属应用id")
private Integer appId;
@ApiModelProperty(value = "所属应用名称")
@ExcelProperty(value = "所属应用")
private String appName;
@ApiModelProperty(value = "是否启用(1:启用 ;0:不启用)")
@ExcelProperty(value = "是否启用")
private Integer isEnable;
@ApiModelProperty(value = "app_消息跳转url")
private String appUrl;
@ApiModelProperty(value = "pc_消息跳转url")
private String pcUrl;
@ApiModelProperty(value = "模板标题")
@ExcelProperty(value = "模板标题")
private String title;
@ApiModelProperty(value = "模板内容")
@ExcelProperty(value = "模板内容")
private String content;
@ApiModelProperty(value = "富文本模板内容")
@ExcelProperty(value = "富文本模板内容")
private String richContent;
private MessageTemplateDynamicProperties dynamicProperties;
@ApiModelProperty(value = "修改时间")
private LocalDateTime lastUpdateTime;
@ApiModelProperty(value = "修改者用户ID")
private Long lastUpdateUser;
@ApiModelProperty(value = "修改者用户名称")
private String lastUpdateUserName;
@ApiModelProperty(value = "是否系统预设(1:是;0:不是)")
@ExcelProperty(value = "是否系统预设", converter = MsgSystemConverter.class)
private Integer isSystemType;
@ApiModelProperty(value = "模板类型编码")
private String msgFormCode;
@ApiModelProperty(value = "模板类型名称")
@ExcelProperty(value = "模板类型")
private String msgFormName;
}
2.动态头实现
@Getter
@RequiredArgsConstructor(staticName = "of")
public class CodeAndValue {
private final String code;
private final String name;
private final Object value;
}
/**
渠道动态配置属性数据提供接口
*/
public interface DynamicPropertiesGenerator {
/**
* 获取动态配置字段信息
*
* @return List<DynamicProperties>
*/
@ApiModelProperty(hidden = true)
@JsonIgnore
List<