package cn.iocoder.yudao.module.qcreport.engine.context;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* 报告上下文。
*
* 模板里的 {@code {{path}}} 全部相对这个结构解析:report 是报告级字段,inspectionItems 是检验项数组。
* 业务单据 → 上下文的映射由调用方负责,模板本身只认这个标准结构,
* 换行业、换单据来源都不需要改模板与组件。
*
* 取值时先摊平成 Map({@link #toScope()}),不靠反射读 POJO 属性:
* 只暴露这里显式放进去的字段,模板路径不可能顺着 getClass 之类读到不该给的东西。
*/
@Data
@Accessors(chain = true)
public class ReportContext {
private ReportFields report = new ReportFields();
private List inspectionItems = new ArrayList<>();
/** 空白上下文:字段齐全但没有值,便于逐项填充 */
public static ReportContext empty() {
return new ReportContext();
}
/** 报告级字段 → Map */
public Map reportMap() {
Map map = new LinkedHashMap<>();
map.put("reportNo", report.getReportNo());
map.put("reportName", report.getReportName());
map.put("sampleNo", report.getSampleNo());
map.put("productCode", report.getProductCode());
map.put("productName", report.getProductName());
map.put("spec", report.getSpec());
map.put("batchNo", report.getBatchNo());
map.put("workOrderNo", report.getWorkOrderNo());
map.put("inspectType", report.getInspectType());
map.put("inspector", report.getInspector());
map.put("inspectDate", report.getInspectDate());
map.put("department", report.getDepartment());
map.put("customerName", report.getCustomerName());
map.put("supplierName", report.getSupplierName());
map.put("result", report.getResult());
map.put("resultText", report.getResultText());
map.put("conclusion", report.getConclusion());
map.put("passRate", report.getPassRate());
map.put("qcResult", report.getQcResult());
map.put("qcResultText", report.getQcResultText());
map.put("total", report.getTotal());
map.put("passCount", report.getPassCount());
map.put("failCount", report.getFailCount());
return map;
}
/** 检验项列表 → Map,渲染与规则求值都从这里取值 */
public static List