package com.ruoyi.jarvis.domain;

import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.Excel.ColumnType;
import com.fasterxml.jackson.annotation.JsonAlias;
import lombok.Data;
import org.springframework.data.annotation.Transient;

import java.util.Date;

/**
 * 京东订单信息对象 jd_order
 */
@Data
public class JDOrder extends BaseEntity {

    /** 主键ID */
    @Excel(name = "ID")
    private Long id;

    /** 单据备注（如日期编号） */
    @Excel(name = "内部单号")
    private String remark;

    /** 分销标记 */
    @Excel(name = "分销标记")
    private String distributionMark;

    /** 型号（本体，不含店铺后缀） */
    @Excel(name = "型号")
    private String modelNumber;

    /** 型号店铺短前缀（如海尔厨房；完整型号 = modelNumber + modelShop） */
    @Excel(name = "型号店铺")
    private String modelShop;

    /** 列表筛选：型号不含这些子串（逗号/空格分隔，对应 SQL 多条 NOT LIKE），不入库 */
    @Transient
    private String modelNumberExclude;

    /** 链接 */
    @Excel(name = "链接")
    private String link;

    /** 下单付款金额 */
    @Excel(name = "付款金额")
    private Double paymentAmount;

    /** 后返金额 */
    @Excel(name = "后返金额")
    private Double rebateAmount;

    /** 地址 */
    @Excel(name = "地址")
    private String address;

    /** 物流链接 */
    @Excel(name = "物流链接")
    private String logisticsLink;

    /** 是否已推送到腾讯文档（0-未推送，1-已推送） */
    private Integer tencentDocPushed;

    /** 推送到腾讯文档的时间 */
    private Date tencentDocPushTime;

    /** 订单号 */
    @Excel(name = "订单号", cellType = ColumnType.STRING)
    private String orderId;

    /** 下单人 */
    @Excel(name = "下单人")
    private String buyer;

    /** 下单时间 */
    @Excel(name = "下单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date orderTime;

    /** 备注（状态） */
    @Excel(name = "备注/状态")
    private String status;

    @Transient
    @Excel(name = "赔付金额")
    private Double proPriceAmount;
    
    @Transient
    @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date finishTime;

    /** 订单状态（从order_rows表查询） */
    @Transient
    @Excel(name = "订单状态")
    private Integer orderStatus;

    /** 发货状态（从 order_rows.express_status 查询，10=待发货） */
    @Transient
    private Integer expressStatus;

    /** 是否参与统计（0否 1是） */
    @Excel(name = "参与统计")
    private Integer isCountEnabled;

    /** 第三方单号 */
    @Excel(name = "第三方单号")
    private String thirdPartyOrderNo;

    /** 京粉实际价格 */
    @Excel(name = "京粉实际价格")
    private Double jingfenActualPrice;

    /** 是否退款（0否 1是） */
    @Excel(name = "是否退款")
    private Integer isRefunded;

    /** 退款日期 */
    @Excel(name = "退款日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date refundDate;

    /** 是否退款到账（0否 1是） */
    @Excel(name = "是否退款到账")
    private Integer isRefundReceived;

    /** 退款到账日期 */
    @Excel(name = "退款到账日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date refundReceivedDate;

    /** 后返到账（0否 1是） */
    @Excel(name = "后返到账")
    private Integer isRebateReceived;

    /** 后返到账日期 */
    @Excel(name = "后返到账日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date rebateReceivedDate;

    /** 点过价保（0否 1是） */
    @Excel(name = "点过价保")
    private Integer isPriceProtected;

    /** 价保日期 */
    @Excel(name = "价保日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date priceProtectedDate;

    /** 开过专票（0否 1是） */
    @Excel(name = "开过专票")
    private Integer isInvoiceOpened;

    /** 开票日期 */
    @Excel(name = "开票日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date invoiceOpenedDate;

    /** 晒过评价（0否 1是） */
    @Excel(name = "晒过评价")
    private Integer isReviewPosted;

    /** 评价日期 */
    @Excel(name = "评价日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date reviewPostedDate;

    /**
     * 后返备注（多次导入跟团返现等 Excel 的记录，JSON 数组字符串）
     * @see com.ruoyi.jarvis.domain.dto.RebateRemarkItem
     */
    private String rebateRemarkJson;

    /** 后返备注中是否存在异常项（1是 0否），便于列表筛选 */
    private Integer rebateRemarkHasAbnormal;

    /** 售价渠道：direct 直款，xianyu 闲鱼（仅 F 单使用） */
    private String sellingPriceType;

    /** 售价（对客成交价，可手动改） */
    private Double sellingPrice;

    /** 利润（可手动改；非 H-TF/F 一般为空） */
    private Double profit;

    /** 售价是否手动锁定（1 是：不再按型号配置自动回填） */
    private Integer sellingPriceManual;

    /** 利润是否手动锁定（1 是：保存时不再自动重算） */
    private Integer profitManual;

    /** 额外成本（计入自动利润：从 netReceipt − 成本中再减去此项，默认 0） */
    @JsonAlias({ "extra_cost" })
    @Excel(name = "额外成本")
    private Double extraCost;

}


