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.common.translation.annotation.Translation; import org.dromara.common.translation.constant.TransConstant; import org.dromara.crm.domain.CrmQuote; 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_quote * * @author 系统管理员 * @date 2025-01-03 */ @Data @AutoMapper(target = CrmQuote.class) public class CrmQuoteVo implements Serializable { @Serial private static final long serialVersionUID = 1L; /** * 主键ID */ @ExcelProperty(value = "ID") private Long id; /** * 报价单编号 */ @ExcelProperty(value = "报价单编号") private String quoteNo; /** * 报价单标题 */ @ExcelProperty(value = "报价单标题") private String quoteTitle; /** * 报价单类型(sales-销售/purchase-采购) */ @ExcelProperty(value = "报价单类型") private String quoteType; /** * 客户ID */ private Long customerId; /** * 客户名称 */ @ExcelProperty(value = "客户名称") private String customerName; /** * 商机ID */ private Long opportunityId; /** * 商机名称 */ @ExcelProperty(value = "商机名称") private String opportunityName; /** * 联系人ID */ private Long contactId; /** * 联系人姓名 */ @ExcelProperty(value = "联系人") private String contactName; /** * 联系人手机 */ private String contactMobile; /** * 联系人邮箱 */ private String contactEmail; /** * 版本号 */ @ExcelProperty(value = "版本号") private String version; /** * 父版本ID */ private Long parentId; /** * 是否最新版本 */ private Integer isLatest; /** * 总金额 */ @ExcelProperty(value = "总金额") private BigDecimal totalAmount; /** * 整单折扣率 */ @ExcelProperty(value = "折扣率") private BigDecimal discountRate; /** * 折扣金额 */ @ExcelProperty(value = "折扣金额") private BigDecimal discountAmount; /** * 最终金额 */ @ExcelProperty(value = "最终金额") private BigDecimal finalAmount; /** * 有效期(天数) */ @ExcelProperty(value = "有效期(天)") private Integer validityDays; /** * 报价日期 */ @ExcelProperty(value = "报价日期") private LocalDate quoteDate; /** * 到期日期 */ @ExcelProperty(value = "到期日期") private LocalDate expireDate; /** * 状态 */ @ExcelProperty(value = "状态", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "crm_quote_status") private String status; /** * 拒绝原因 */ private String rejectReason; /** * PDF文件路径 */ private String pdfUrl; /** * PDF是否已生成 */ private Integer pdfGenerated; /** * 分享链接 */ private String shareLink; /** * 分享码 */ private String shareCode; /** * 查看次数 */ @ExcelProperty(value = "查看次数") private Integer viewCount; /** * 最后查看时间 */ private LocalDateTime lastViewTime; /** * 负责人ID */ private Long ownerUserId; /** * 负责人姓名 */ @ExcelProperty(value = "负责人") private String ownerUserName; /** * 负责人手机号 */ private String ownerUserMobile; /** * 报价主体ID */ private Long supplierId; /** * 报价主体名称 */ @ExcelProperty(value = "报价主体") private String supplierName; /** * 关联合同ID */ private Long contractId; /** * 被合同关联次数 */ private Integer contractLinkedCount; /** * 付款条款 */ private String paymentTerms; /** * 交付条款 */ private String deliveryTerms; /** * 运费(元) */ @ExcelProperty(value = "运费(元)") private BigDecimal freight; /** * 附件(多个用逗号分隔) */ private String attachments; /** * 报价单模板内容(富文本HTML) */ private String templateContent; /** * 创建部门 */ private Long createDept; /** * 创建部门名称 */ @Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "createDept") @ExcelProperty(value = "创建部门") private String createDeptName; /** * 创建者 */ private Long createBy; /** * 创建者昵称 */ @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy") @ExcelProperty(value = "创建人") private String createByName; /** * 创建时间 */ @ExcelProperty(value = "创建时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date createTime; /** * 更新者 */ private Long updateBy; /** * 更新者昵称 */ @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "updateBy") @ExcelProperty(value = "更新人") private String updateByName; /** * 更新时间 */ @ExcelProperty(value = "更新时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date updateTime; /** * 备注 */ @ExcelProperty(value = "备注") private String remark; /** * 产品列表 */ private List productList; /** * 当前用户是否可以审批(前端显示审批按钮时使用) */ private Boolean canApprove; }