package com.flossom.common.core.domain.entity;

import java.time.LocalDateTime;
import java.time.LocalTime;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.flossom.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 仪器列对象 wx_instrument
 *
 * @author flossom
 * @date 2024-01-06
 */
public class WxInstrument extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 仪器ID
     */
    private Long id;

    /**
     * 仪器名称
     */
    private String name;

    /**
     * 仪器：1、普通仪器 2、iot仪器
     */
    private Integer type;

    /**
     * iot仪器特有：仪器型号
     */
    private String model;

    /**
     * 仪器封面（图片地址）
     */
    private String banner;

    /**
     * 仪器logo图（图片地址）
     */
    private String logo;

    /**
     * 序列号位置图片（图片地址）
     */
    private String serial;

    /**
     * 保修日期
     */
    private Long guarantee;

    /**
     * 日常打卡获得积分
     */
    private Long dailyClockCredit;

    /**
     * 额外打卡奖励积分
     */
    private Long extraClockCredit;

    /**
     * 是否开启额外打卡奖励
     */
    private Long isExtraClock;

    /**
     * 仪器绑定积分
     */
    private Integer bindingCredit;

    /**
     * 额外打卡时间开始
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startTime;

    /**
     * 额外打卡时间结束
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endTime;

    /**
     * 标签ID(xxxx,xxxx,xxx)
     */
    private String miniTagIds;

    /**
     * 标签名字(xxx,xxx,xxx)
     */
    private String miniTagNames;

    /**
     * 标签ID(xxxx,xxxx,xxx)
     */
    private String wecomTagIds;

    /**
     * 标签名称(xxx,xxx,xxx)
     */
    private String wecomTagNames;

    /**
     * 护理时长
     */
    @JsonFormat(pattern = "HH:mm:ss")
    private LocalTime nursingTime;

    private String nursingTimeStr;

    /**
     * iot版本
     */
    private String iotVersion;

    /**
     * iot升级数据文件
     */
    private String iotUpgradeData;

    /**
     * 是否开启扫机身码：0、关闭 1、开启
     */
    private Integer isScanCode;

    /**
     * 是否支持购买：0、不支持 1、支持
     */
    private Integer isPurchase;

    /**
     * 商城小程序appid
     */
    private String shoppingAppid;

    /**
     * 商城小程序path
     */
    private String shoppingPath;

    /**
     * 蓝牙连接中标题
     */
    private String bluetoothConnectingTitle;

    /**
     * 蓝牙连接中图片
     */
    private String bluetoothConnecting;

    /**
     * 蓝牙连接中文案
     */
    private String bluetoothConnectingContent;

    /**
     * 蓝牙关闭标题
     */
    private String bluetoothClosedTitle;

    /**
     * 蓝牙关闭图片
     */
    private String bluetoothClosed;

    /**
     * 蓝牙关闭文案
     */
    private String bluetoothClosedContent;

    /**
     * 蓝牙连接失败标题
     */
    private String bluetoothConnectFailTitle;

    /**
     * 蓝牙连接失败图片
     */
    private String bluetoothConnectFail;

    /**
     * 蓝牙连接失败文案
     */
    private String bluetoothConnectFailContent;

    /**
     * iot版本升级说明
     */
    private String iotVersionUpgrade;

    /**
     * 排序:值越大，排序越前
     */
    private Long sortNo;

    /**
     * 状态（0正常 1停用）
     */
    private Long status;

    /**
     * 手动绑定介绍图片
     */
    private String manualCodeBinding;

    /**
     * 扫码绑定介绍图片
     */
    private String scanCodeBinding;

    /**
     * we200iot版本
     */
    private String we200IotVersion;

    /**
     * we200iot升级数据文件
     */
    private String we200IotUpgradeData;

    /**
     * we200iot版本升级说明
     */
    private String we200IotVersionUpgrade;

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public Integer getType() {
        return type;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public String getModel() {
        return model;
    }

    public void setBanner(String banner) {
        this.banner = banner;
    }

    public String getBanner() {
        return banner;
    }

    public void setLogo(String logo) {
        this.logo = logo;
    }

    public String getLogo() {
        return logo;
    }

    public void setSerial(String serial) {
        this.serial = serial;
    }

    public String getSerial() {
        return serial;
    }

    public void setGuarantee(Long guarantee) {
        this.guarantee = guarantee;
    }

    public Long getGuarantee() {
        return guarantee;
    }

    public void setDailyClockCredit(Long dailyClockCredit) {
        this.dailyClockCredit = dailyClockCredit;
    }

    public Long getDailyClockCredit() {
        return dailyClockCredit;
    }

    public void setExtraClockCredit(Long extraClockCredit) {
        this.extraClockCredit = extraClockCredit;
    }

    public Long getExtraClockCredit() {
        return extraClockCredit;
    }

    public void setStartTime(LocalDateTime startTime) {
        this.startTime = startTime;
    }

    public LocalDateTime getStartTime() {
        return startTime;
    }

    public void setEndTime(LocalDateTime endTime) {
        this.endTime = endTime;
    }

    public LocalDateTime getEndTime() {
        return endTime;
    }

    public void setMiniTagIds(String miniTagIds) {
        this.miniTagIds = miniTagIds;
    }

    public String getMiniTagIds() {
        return miniTagIds;
    }

    public void setMiniTagNames(String miniTagNames) {
        this.miniTagNames = miniTagNames;
    }

    public String getMiniTagNames() {
        return miniTagNames;
    }

    public void setWecomTagIds(String wecomTagIds) {
        this.wecomTagIds = wecomTagIds;
    }

    public String getWecomTagIds() {
        return wecomTagIds;
    }

    public void setWecomTagNames(String wecomTagNames) {
        this.wecomTagNames = wecomTagNames;
    }

    public String getWecomTagNames() {
        return wecomTagNames;
    }

    public void setNursingTime(LocalTime nursingTime) {
        this.nursingTime = nursingTime;
        // 将 localTime 转为 分秒 格式
        if (nursingTime != null) {
            this.nursingTimeStr = String.format("%02d:%02d", nursingTime.getMinute(), nursingTime.getSecond());
        }
    }

    public LocalTime getNursingTime() {
        return nursingTime;
    }

    public void setIotVersion(String iotVersion) {
        this.iotVersion = iotVersion;
    }

    public String getIotVersion() {
        return iotVersion;
    }

    public void setIotUpgradeData(String iotUpgradeData) {
        this.iotUpgradeData = iotUpgradeData;
    }

    public String getIotUpgradeData() {
        return iotUpgradeData;
    }

    public void setIsScanCode(Integer isScanCode) {
        this.isScanCode = isScanCode;
    }

    public Integer getIsScanCode() {
        return isScanCode;
    }

    public void setIsPurchase(Integer isPurchase) {
        this.isPurchase = isPurchase;
    }

    public Integer getIsPurchase() {
        return isPurchase;
    }

    public void setShoppingAppid(String shoppingAppid) {
        this.shoppingAppid = shoppingAppid;
    }

    public String getShoppingAppid() {
        return shoppingAppid;
    }

    public void setShoppingPath(String shoppingPath) {
        this.shoppingPath = shoppingPath;
    }

    public String getShoppingPath() {
        return shoppingPath;
    }

    public void setBluetoothConnecting(String bluetoothConnecting) {
        this.bluetoothConnecting = bluetoothConnecting;
    }

    public String getBluetoothConnecting() {
        return bluetoothConnecting;
    }

    public void setBluetoothClosed(String bluetoothClosed) {
        this.bluetoothClosed = bluetoothClosed;
    }

    public String getBluetoothClosed() {
        return bluetoothClosed;
    }

    public void setIotVersionUpgrade(String iotVersionUpgrade) {
        this.iotVersionUpgrade = iotVersionUpgrade;
    }

    public String getIotVersionUpgrade() {
        return iotVersionUpgrade;
    }

    public void setSortNo(Long sortNo) {
        this.sortNo = sortNo;
    }

    public Long getSortNo() {
        return sortNo;
    }

    public void setStatus(Long status) {
        this.status = status;
    }

    public Long getStatus() {
        return status;
    }

    public void setManualCodeBinding(String manualCodeBinding) {
        this.manualCodeBinding = manualCodeBinding;
    }

    public String getManualCodeBinding() {
        return manualCodeBinding;
    }

    public void setScanCodeBinding(String scanCodeBinding) {
        this.scanCodeBinding = scanCodeBinding;
    }

    public String getScanCodeBinding() {
        return scanCodeBinding;
    }

    public Long getIsExtraClock() {
        return isExtraClock;
    }

    public void setIsExtraClock(Long isExtraClock) {
        this.isExtraClock = isExtraClock;
    }

    public Integer getBindingCredit() {
        return bindingCredit;
    }

    public void setBindingCredit(Integer bindingCredit) {
        this.bindingCredit = bindingCredit;
    }

    public String getBluetoothConnectingTitle() {
        return bluetoothConnectingTitle;
    }

    public void setBluetoothConnectingTitle(String bluetoothConnectingTitle) {
        this.bluetoothConnectingTitle = bluetoothConnectingTitle;
    }

    public String getBluetoothClosedTitle() {
        return bluetoothClosedTitle;
    }

    public void setBluetoothClosedTitle(String bluetoothClosedTitle) {
        this.bluetoothClosedTitle = bluetoothClosedTitle;
    }

    public String getBluetoothConnectFailTitle() {
        return bluetoothConnectFailTitle;
    }

    public void setBluetoothConnectFailTitle(String bluetoothConnectFailTitle) {
        this.bluetoothConnectFailTitle = bluetoothConnectFailTitle;
    }

    public String getBluetoothConnectFail() {
        return bluetoothConnectFail;
    }

    public void setBluetoothConnectFail(String bluetoothConnectFail) {
        this.bluetoothConnectFail = bluetoothConnectFail;
    }

    public String getBluetoothConnectingContent() {
        return bluetoothConnectingContent;
    }

    public void setBluetoothConnectingContent(String bluetoothConnectingContent) {
        this.bluetoothConnectingContent = bluetoothConnectingContent;
    }

    public String getBluetoothClosedContent() {
        return bluetoothClosedContent;
    }

    public void setBluetoothClosedContent(String bluetoothClosedContent) {
        this.bluetoothClosedContent = bluetoothClosedContent;
    }

    public String getBluetoothConnectFailContent() {
        return bluetoothConnectFailContent;
    }

    public void setBluetoothConnectFailContent(String bluetoothConnectFailContent) {
        this.bluetoothConnectFailContent = bluetoothConnectFailContent;
    }

    public String getWe200IotVersion() {
        return we200IotVersion;
    }

    public void setWe200IotVersion(String we200IotVersion) {
        this.we200IotVersion = we200IotVersion;
    }

    public String getWe200IotUpgradeData() {
        return we200IotUpgradeData;
    }

    public void setWe200IotUpgradeData(String we200IotUpgradeData) {
        this.we200IotUpgradeData = we200IotUpgradeData;
    }

    public String getWe200IotVersionUpgrade() {
        return we200IotVersionUpgrade;
    }

    public void setWe200IotVersionUpgrade(String we200IotVersionUpgrade) {
        this.we200IotVersionUpgrade = we200IotVersionUpgrade;
    }

    public String getNursingTimeStr() {
        return nursingTimeStr;
    }
}
