云
8 小时以前 5855c0af33dc84386749093168fbd417131f680f
feat(quality): 添加质量检验报告日期格式化功能

- 引入 DateFormatRenderPolicy 工具类处理日期格式化渲染
- 在质量检验服务中为 checkTime 字段绑定日期格式化策略
- 配置日期格式为 YYYY-MM-DD 格式以保持一致性
- 实现对 Date、LocalDateTime 和 LocalDate 类型的统一格式化处理
- 解决了 poi-tl 直接调用 Date.toString() 输出带时区英文格式的问题
已添加3个文件
已修改1个文件
56 ■■■■■ 文件已修改
docs/2)测量设备(含计量)台账.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
docs/豹鸣系统问题.docx 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/common/utils/DateFormatRenderPolicy.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/2)测量设备(含计量)台账.xlsx
Binary files differ
docs/豹鸣系统问题.docx
Binary files differ
src/main/java/com/ruoyi/common/utils/DateFormatRenderPolicy.java
对比新文件
@@ -0,0 +1,53 @@
package com.ruoyi.common.utils;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.exception.RenderException;
import com.deepoove.poi.policy.RenderPolicy;
import com.deepoove.poi.template.ElementTemplate;
import com.deepoove.poi.template.run.RunTemplate;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
/**
 * 鏃ユ湡鏍煎紡鍖栨覆鏌撶瓥鐣ワ紝閬垮厤 poi-tl 鐩存帴璋冪敤 Date.toString() 杈撳嚭甯︽椂鍖虹殑鑻辨枃鏍煎紡
 */
public class DateFormatRenderPolicy implements RenderPolicy {
    private final String pattern;
    private final DateTimeFormatter dateTimeFormatter;
    public DateFormatRenderPolicy(String pattern) {
        this.pattern = pattern;
        this.dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
    }
    @Override
    public void render(ElementTemplate eleTemplate, Object data, XWPFTemplate template) {
        XWPFRun run = ((RunTemplate) eleTemplate).getRun();
        try {
            run.setText(format(data), 0);
        } catch (Exception e) {
            throw new RenderException("DateFormatRender for " + eleTemplate + " error: " + e.getMessage(), e);
        }
    }
    private String format(Object data) {
        if (data == null) {
            return "";
        }
        if (data instanceof Date date) {
            return DateUtils.parseDateToStr(pattern, date);
        }
        if (data instanceof LocalDateTime dateTime) {
            return dateTime.format(dateTimeFormatter);
        }
        if (data instanceof LocalDate date) {
            return date.format(dateTimeFormatter);
        }
        return data.toString();
    }
}
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -11,6 +11,7 @@
import com.deepoove.poi.config.Configure;
import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateFormatRenderPolicy;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.HackLoopTableRenderPolicy;
import com.ruoyi.common.utils.poi.ExcelUtil;
@@ -254,6 +255,7 @@
        InputStream inputStream = this.getClass().getResourceAsStream("/static/report-template.docx");
        Configure configure = Configure.builder()
                .bind("paramList", new HackLoopTableRenderPolicy())
                .bind("inspect.checkTime", new DateFormatRenderPolicy(DateUtils.YYYY_MM_DD))
                .build();
        String finalInspectType = inspectType;
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
@@ -311,6 +313,7 @@
        InputStream inputStream = this.getClass().getResourceAsStream("/static/report-template.docx");
        Configure configure = Configure.builder()
                .bind("paramList", new HackLoopTableRenderPolicy())
                .bind("inspect.checkTime", new DateFormatRenderPolicy(DateUtils.YYYY_MM_DD))
                .build();
        String finalInspectType = inspectType;
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(