!53 refactor(excel): 提取Excel工具包为独立模块jeecg-module-tools,支持跨项目复用

* refactor(excel): 提取Excel工具包为独立模块jeecg-module-tools,支持跨项目复用
* fix(excel): 校验错误详情返回前端,ColumnMeta重构为Record,避免字典错后重复报NotBlank
* Merge remote-tracking branch 'origin/master'
* chore: 添加easyexcel依赖
This commit is contained in:
new_new_new
2026-06-24 03:36:58 +00:00
parent 9aec8dbbbe
commit a7915177a0
13 changed files with 441 additions and 315 deletions
@@ -9,8 +9,9 @@ import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import org.jeecg.common.constant.ProvinceCityArea;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecg.common.util.excel.annotation.ExcelColumn;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -57,128 +58,152 @@ public class BgXiSpeak implements Serializable {
@Schema(description = "所属部门")
private java.lang.String sysOrgCode;
/**父级节点*/
// @Excel(name = "父级节点", width = 15)
// @ExcelColumn(name = "父级节点", width = 15)
@Schema(description = "父级节点")
private java.lang.String pid;
/**是否有子节点*/
// @Excel(name = "是否有子节点", width = 15, dicCode = "yn")
// @ExcelColumn(name = "是否有子节点", width = 15, dicCode = "yn")
@Dict(dicCode = "yn")
@Schema(description = "是否有子节点")
private java.lang.String hasChild;
/**习近平总书记重要讲话指示批示情况*/
@Excel(name = "习近平总书记重要讲话指示批示情况", width = 15)
@Excel(name = "习近平总书记重要讲话指示批示情况", width = 15)
@ExcelColumn(name = "习近平总书记重要讲话指示批示情况", width = 15)
@Schema(description = "习近平总书记重要讲话指示批示情况")
private java.lang.String speakStatus;
/**时间*/
@Excel(name = "时间", width = 15, format = "yyyy-MM-dd")
@Excel(name = "时间", width = 15, format = "yyyy-MM-dd")
@ExcelColumn(name = "时间", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@Schema(description = "时间")
private java.util.Date time;
/**企业负责同志批示情况*/
@Excel(name = "企业负责同志批示情况", width = 15)
@Excel(name = "企业负责同志批示情况", width = 15)
@ExcelColumn(name = "企业负责同志批示情况", width = 15)
@Schema(description = "企业负责同志批示情况")
private java.lang.String elmComment;
/**学习传达研究部署情况*/
@Excel(name = "学习传达研究部署情况", width = 15)
@Excel(name = "学习传达研究部署情况", width = 15)
@ExcelColumn(name = "学习传达研究部署情况", width = 15)
@Schema(description = "学习传达研究部署情况")
private java.lang.String status;
/**密级*/
@Excel(name = "密级(请填入非秘/秘密/机密)-必填", width = 15, dicCode = "secret_level")
@Excel(name = "密级(请填入非秘/秘密/机密)-必填", width = 15, dicCode = "secret_level")
@ExcelColumn(name = "密级(请填入非秘/秘密/机密)-必填", width = 15, dicCode = "secret_level")
@Dict(dicCode = "secret_level")
@Schema(description = "密级")
@NotBlank
@NotBlank(message = "不能为空")
private java.lang.String secretLevel;
/**责任人*/
@Excel(name = "责任人", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "username")
@Excel(name = "责任人", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "username")
@ExcelColumn(name = "责任人", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "username")
@Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username")
@Schema(description = "责任人")
private java.lang.String responsiblePerson;
/**落实方案*/
@Excel(name = "落实方案", width = 15)
@Excel(name = "落实方案", width = 15)
@ExcelColumn(name = "落实方案", width = 15)
@Schema(description = "落实方案")
private java.lang.String implPlan;
/**牵头部门*/
@Excel(name = "牵头部门", width = 15, dictTable = "sys_depart", dicText = "depart_name", dicCode = "id")
@Excel(name = "牵头部门", width = 15, dictTable = "sys_depart", dicText = "depart_name", dicCode = "id")
@ExcelColumn(name = "牵头部门", width = 15, dictTable = "sys_depart", dicText = "depart_name", dicCode = "id")
@Dict(dictTable = "sys_depart", dicText = "depart_name", dicCode = "id")
@Schema(description = "牵头部门")
private java.lang.String leadDepartment;
/**贯彻落实措施*/
@Excel(name = "贯彻落实措施-必填", width = 15)
@Excel(name = "贯彻落实措施-必填", width = 15)
@ExcelColumn(name = "贯彻落实措施-必填", width = 15)
@Schema(description = "贯彻落实措施")
@NotBlank
@NotBlank(message = "不能为空")
private java.lang.String implMeasures;
/**会议决策数*/
@Excel(name = "会议决策数", width = 15)
@Excel(name = "会议决策数", width = 15)
@ExcelColumn(name = "会议决策数", width = 15)
@Schema(description = "会议决策数")
private java.lang.Integer numberOfResolutions;
/**落实情况*/
@Excel(name = "落实情况", width = 15)
@Excel(name = "落实情况", width = 15)
@ExcelColumn(name = "落实情况", width = 15)
@Schema(description = "落实情况")
private java.lang.String implStatus;
/**落实条数*/
@Excel(name = "落实条数", width = 15)
@Excel(name = "落实条数", width = 15)
@ExcelColumn(name = "落实条数", width = 15)
@Schema(description = "落实条数")
private java.lang.Integer implCount;
/**已闭环数量*/
@Excel(name = "已闭环数量", width = 15)
@Excel(name = "已闭环数量", width = 15)
@ExcelColumn(name = "已闭环数量", width = 15)
@Schema(description = "已闭环数量")
private java.lang.Integer closedCount;
/**报告反馈情况*/
@Excel(name = "报告反馈情况", width = 15)
@Excel(name = "报告反馈情况", width = 15)
@ExcelColumn(name = "报告反馈情况", width = 15)
@Schema(description = "报告反馈情况")
private java.lang.String reportFeedbackStatus;
/**是否存在完成风险(0不存在,1存在)*/
@Excel(name = "是否存在完成风险(请填入是/否)", width = 15, dicCode = "true_or_flase")
@Excel(name = "是否存在完成风险(请填入是/否)", width = 15, dicCode = "true_or_flase")
@ExcelColumn(name = "是否存在完成风险(请填入是/否)", width = 15, dicCode = "true_or_flase")
@Schema(description = "是否存在完成风险(0不存在,1存在)")
private java.lang.Integer isCompletionRisk;
/**拖期风险应对措施*/
@Excel(name = "拖期风险应对措施", width = 15)
@Excel(name = "拖期风险应对措施", width = 15)
@ExcelColumn(name = "拖期风险应对措施", width = 15)
@Schema(description = "拖期风险应对措施")
private java.lang.String delayRiskMitigation;
/**完成状态(0推进中,1已完成)*/
@Excel(name = "完成状态(请填入推进中/已完成)-必填", width = 15, dicCode = "db_status")
@Excel(name = "完成状态(请填入推进中/已完成)-必填", width = 15, dicCode = "db_status")
@ExcelColumn(name = "完成状态(请填入推进中/已完成)-必填", width = 15, dicCode = "db_status")
@Schema(description = "完成状态(0推进中,1已完成)")
@Dict( dicCode = "db_status")
private java.lang.Integer completionStatus;
/**落实部门id*/
@Excel(name = "落实部门", width = 15, dictTable = "sys_depart", dicText = "depart_name", dicCode = "id")
@Excel(name = "落实部门", width = 15, dictTable = "sys_depart", dicText = "depart_name", dicCode = "id")
@ExcelColumn(name = "落实部门", width = 15, dictTable = "sys_depart", dicText = "depart_name", dicCode = "id")
@Dict(dictTable = "sys_depart", dicText = "depart_name", dicCode = "id")
@Schema(description = "落实部门id")
private java.lang.String implDept;
/**层深(最顶层节点层深为0)*/
//@Excel(name = "层深(最顶层节点层深为0)", width = 15)
//@ExcelColumn(name = "层深(最顶层节点层深为0)", width = 15)
@Schema(description = "层深(最顶层节点层深为0)")
private java.lang.Integer treeDepth;
/**同级数据排序号*/
@Excel(name = "同级数据排序号", width = 15)
@Excel(name = "同级数据排序号", width = 15)
@ExcelColumn(name = "同级数据排序号", width = 15)
@Schema(description = "同级数据排序号")
private java.lang.Integer sortOrder;
/**逻辑删除flag(0保留,1删除)*/
@Excel(name = "逻辑删除flag(0保留,1删除)", width = 15)
//@Excel(name = "逻辑删除flag(0保留,1删除)", width = 15)
//@ExcelColumn(name = "逻辑删除flag(0保留,1删除)", width = 15)
@Schema(description = "逻辑删除flag(0保留,1删除)")
@TableLogic
private java.lang.Integer delFlag;
/**流程引擎状态字段*/
// @Excel(name = "流程引擎状态字段", width = 15)
// @ExcelColumn(name = "流程引擎状态字段", width = 15)
@Schema(description = "流程引擎状态字段")
private java.lang.Integer bpmStatus;
/**督办次数*/
@Excel(name = "督办次数", width = 15)
@Excel(name = "督办次数", width = 15)
@ExcelColumn(name = "督办次数", width = 15)
@Schema(description = "督办次数")
private java.lang.Integer supervisionCount;
/**dw领导userId字段*/
@Excel(name = "领导", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "username")
@ExcelColumn(name = "领导", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "username")
@Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username")
@Schema(description = "领导userId字段")
private java.lang.String sdwLeaderList;
/**dw领导userId字段*/
@Excel(name = "是否需要sdw审批(请填入是/否)", width = 15,dicCode = "true_or_flase")
@ExcelColumn(name = "是否需要sdw审批(请填入是/否)", width = 15,dicCode = "true_or_flase")
@Schema(description = "是否需要sdw审批")
private java.lang.Integer needSdwApproval;
/**dw领导userId字段*/
@Excel(name = "截止日期", width = 15)
@ExcelColumn(name = "截止日期", width = 15)
@Schema(description = "截止日期")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") // 核心:告诉Jackson怎么把String转成Date
@DateTimeFormat(pattern="yyyy-MM-dd")
@@ -188,12 +213,12 @@ public class BgXiSpeak implements Serializable {
private DeptApproveDetailMap approveInfo;
/**督办次数*/
// @Excel(name = "发起类型", width = 15)
// @ExcelColumn(name = "发起类型", width = 15)
@Schema(description = "0收集后直接发起,1收集后按照反馈时间周期性发起")
private java.lang.Integer launchType;
/**周期类型 1日 2周 3两周 4月 5季*/
// @Excel(name = "周期类型", width = 15)
// @ExcelColumn(name = "周期类型", width = 15)
@Schema(description = "周期类型 1日 2周 3两周 4月 5季")
private java.lang.Integer intervalType;