package com.czg.account.entity;

import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 打印机设备 实体类。
 *
 * @author zs
 * @since 2025-02-20
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("tb_print_machine")
public class PrintMachine implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @Id(keyType = KeyType.Auto)
    private Long id;

    /**
     * 店铺Id
     */
    private Long shopId;

    /**
     * 设备名称
     */
    private String name;

    /**
     * 连接方式  USB、云打印、局域网
     */
    private String connectionType;

    /**
     * 打印类型 label标签 cash小票
     */
    private String printType;

    /**
     * 打印机品牌 飞鹅/云想印
     */
    private String brand;

    /**
     * ip地址/MAC地址
     */
    private String address;

    /**
     * 端口
     */
    private String port;


    /**
     * 小票尺寸 58mm 80mm
     */
    private String receiptSize;

    /**
     * 打印数量
     */
    private Integer printNum;

    /**
     * 打印内容 数组
     * GUEST_ORDER("客看单"),PRE_ORDER("预结算单"),ORDER("订单结算单"),RETURN_ORDER("退菜单"),REFUND_ORDER("退款单"),
     * ALL_KITCHEN("后厨整单"),ONLY_KITCHEN("后厨分单"),REFUND_KITCHEN("后厨退菜单"),
     * HANDOVER("交班单"),CALL("排队取号"),RECHARGE("储值单"),STOCK("出入库单"),STOCK_CHECK("盘点单"),
     * PRODUCT_REPORT("商品报表"),DAY_REPORT("经营日报"),DAY_ORDER("日结单")
     */
    private String printContentType;

    /**
     * 打印模式(厨房打印菜品) all整单 /only单个
     */
    private String kitchenPrintMode;

    /**
     * 分类打印 0-所有 1-部分分类
     */
    private String classifyPrint;

    /**
     * 分类Id
     */
    private String categoryIds;

    /**
     * 0 禁用 1启用
     */
    private Integer status;

    /**
     * 媒体声音开关 0关1开
     */
    private Integer volumeSwitch;

    /**
     * 创建时间
     */
    @Column(onInsertValue = "now()")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @Column(onUpdateValue = "now()")
    private LocalDateTime updateTime;

    /**
     * 排序
     */
    private Integer sort;
}