package org.dromara.crm.domain.vo; import cn.idev.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.crm.domain.CrmContractProduct; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serial; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Date; import java.util.List; /** * CRM合同产品明细视图对象 crm_contract_product * * @author AI Assistant * @date 2025-10-04 */ @Data @AutoMapper(target = CrmContractProduct.class) public class CrmContractProductVo implements Serializable { @Serial private static final long serialVersionUID = 1L; /** * 主键ID */ @ExcelProperty(value = "ID") private Long id; /** * 合同ID */ private Long contractId; /** * 产品ID */ private Long productId; /** * 产品名称 */ @ExcelProperty(value = "产品名称") private String productName; /** * 产品编号 */ @ExcelProperty(value = "产品编号") private String productNo; /** * 产品分类ID */ private Long categoryId; /** * 产品分类名称 */ @ExcelProperty(value = "产品分类") private String categoryName; /** * 规格型号 */ @ExcelProperty(value = "规格型号") private String model; /** * 单位 */ @ExcelProperty(value = "单位") private String unit; /** * 数量 */ @ExcelProperty(value = "数量") private BigDecimal quantity; /** * 单价 */ @ExcelProperty(value = "单价") private BigDecimal price; /** * 折扣 */ @ExcelProperty(value = "折扣(%)") private BigDecimal discount; /** * 税率 */ @ExcelProperty(value = "税率(%)") private BigDecimal taxRate; /** * 税费金额 */ @ExcelProperty(value = "税费金额") private BigDecimal taxAmount; /** * 小计金额 */ @ExcelProperty(value = "小计金额") private BigDecimal subtotal; /** * 交付日期 */ @ExcelProperty(value = "交付日期") private LocalDate deliveryDate; /** * 交付状态 */ @ExcelProperty(value = "交付状态", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "crm_contract_delivery_status") private String deliveryStatus; /** * 已交付数量 */ @ExcelProperty(value = "已交付数量") private BigDecimal deliveredQuantity; /** * 产品描述 */ private String description; /** * 包装规格 */ @ExcelProperty(value = "包装规格") private String packageSpec; /** * 送货方式 */ @ExcelProperty(value = "送货方式") private String deliveryMethod; /** * 排序号 */ private Integer sort; /** * 创建时间 */ @ExcelProperty(value = "创建时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date createTime; /** * 备注 */ @ExcelProperty(value = "备注") private String remark; /** * 框架合同调价区间(查询时组装) */ private List priceTiers; }