昨天 c89f7dcf9344a35efde2a00edb10491b401ba000
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/pub/trace/vo/MesProTracePublicRespVO.java
@@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.mes.controller.pub.trace.vo;
import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchFlowRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchProcessTraceRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchPurchaseSourceRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchSalesTargetRespVO;
@@ -14,7 +15,7 @@
 * H5 扫码溯源 - 全程溯源信息 Response VO
 * <p>
 * 以「信息区块」模块化组织,核心信息(品种/批次/人员/质检/入库)始终返回;
 * 采购来源、销售去向、加工流转为可选扩展区块(有数据才非空)。后续新增数据源按同一模式追加区块字段。
 * 采购来源、销售去向、种子流向(批次出入库流水)、加工流转为可选扩展区块(有数据才非空)。后续新增数据源按同一模式追加区块字段。
 */
@Schema(description = "H5 扫码溯源 - 全程溯源信息 Response VO")
@Data
@@ -105,6 +106,10 @@
    @Schema(description = "种子质检信息")
    private QualityVO quality;
    // ====== 防伪验证区块 ======
    @Schema(description = "防伪验证信息(该追溯码扫码次数与时间)")
    private AntiFakeVO antiFake;
    // ====== 可选扩展区块(有数据才返回,空表返回空列表) ======
    @Schema(description = "采购来源(可选)")
    private List<MesWmBatchPurchaseSourceRespVO> purchaseSources;
@@ -112,8 +117,49 @@
    @Schema(description = "销售去向(可选)")
    private List<MesWmBatchSalesTargetRespVO> salesTargets;
    @Schema(description = "种子流向信息(批次出入库流水:生产入库 → 销售出库等,可选)")
    private List<MesWmBatchFlowRespVO> seedFlows;
    @Schema(description = "加工流转(可选)")
    private List<MesWmBatchProcessTraceRespVO> processTraces;
    @Schema(description = "追溯时间线")
    private List<TimelineVO> timeline;
    @Schema(description = "追溯决策摘要")
    private DecisionVO decision;
    @Schema(description = "追溯时间线事件")
    @Data
    public static class TimelineVO {
        @Schema(description = "阶段")
        private String stage;
        @Schema(description = "事件类型")
        private String eventType;
        @Schema(description = "事件名称")
        private String eventName;
        @Schema(description = "事件时间")
        private LocalDateTime eventTime;
        @Schema(description = "数量")
        private BigDecimal quantity;
        @Schema(description = "状态")
        private String status;
    }
    @Schema(description = "追溯决策摘要")
    @Data
    public static class DecisionVO {
        @Schema(description = "质量是否存在风险")
        private Boolean qualityRisk;
        @Schema(description = "库存入库数量")
        private BigDecimal inboundQuantity;
        @Schema(description = "销售去向数量")
        private Integer salesTargetCount;
        @Schema(description = "消费者扫码次数")
        private Long consumerScanCount;
        @Schema(description = "风险等级")
        private String riskLevel;
    }
    @Schema(description = "生产人员")
    @Data
@@ -175,6 +221,17 @@
        private LocalDateTime eventTime;
    }
    @Schema(description = "防伪验证信息")
    @Data
    public static class AntiFakeVO {
        @Schema(description = "该追溯码累计扫码次数", example = "3")
        private Long scanCount;
        @Schema(description = "首次扫码时间")
        private LocalDateTime firstScanTime;
        @Schema(description = "最近扫码时间")
        private LocalDateTime lastScanTime;
    }
    @Schema(description = "种子质检信息")
    @Data
    public static class QualityVO {