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

import com.fasterxml.jackson.annotation.JsonFormat;
import com.flossom.common.core.domain.entity.WxInstrumentFileRelate;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.List;

/**
 * 仪器列对象 wx_instrument 保存对象
 *
 * @author flossom
 * @date 2024-01-06
 */
public class WxInstrumentSaveReq {

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

    /**
     * 仪器名称
     */
    @NotBlank(message = "请输入仪器名称")
    @Length(min = 1, message = "请输入仪器名称")
    private String name;

    /**
     * 仪器：1、普通仪器 2、iot仪器
     */
    @NotBlank(message = "请选择仪器类型")
    private Integer type;

    /**
     * iot仪器特有：仪器型号
     */
    @NotBlank(message = "请输入仪器型号")
    @Length(min = 1, message = "请输入仪器型号")
    private String model;

    /**
     * 仪器封面（图片地址）
     */
    @NotBlank(message = "请上传仪器封面")
    private String banner;

    /**
     * 仪器logo图（图片地址）
     */
    @NotBlank(message = "请上传仪器logo")
    private String logo;

    /**
     * 序列号位置图片（图片地址）
     */
    @NotBlank(message = "请上传仪器序列号图片")
    private String serial;

    /**
     * 保修日期
     */
    @NotNull(message = "请输入保修日期")
    private Long guarantee;

    /**
     * 日常打卡获得积分
     */
    @NotNull(message = "请输入日常打卡获得积分")
    private Long dailyClockCredit;

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

    /**
     * 是否开启额外打卡奖励
     */
    @NotNull(message = "请选择是否开启额外打卡奖励")
    private Long isExtraClock;

    @NotNull(message = "请选择额外打卡时间范围")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private List<LocalDateTime> extraClockTimeRange;

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

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

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

    /**
     * 护理时长
     */
    @NotNull(message = "请选择护理时间")
    @JsonFormat(pattern = "HH:mm:ss")
    private LocalTime nursingTime;

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

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

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

    /**
     * 是否支持购买：0、不支持 1、支持
     */
    @NotNull(message = "请选择是否支持购买")
    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;

    /**
     * 排序:值越大，排序越前
     */
    @NotNull(message = "请输入排序")
    private Long sortNo;

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

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

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

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

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


    /**
     * 初次护理介绍视频/图片
     */
    private List<WxInstrumentFileRelate> nurseList;

    /**
     * 仪器介绍规则
     */
    private List<WxInstrumentFileRelate> introduceList;

    /**
     * 关联模式
     * @return
     */
    private List<Integer> modeIdsValue;

    /**
     * 带new标识的模式
     */
    private List<Integer> newModeIdList;

    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public Integer getType() {
        return type;
    }

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

    public String getModel() {
        return model;
    }

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

    public String getBanner() {
        return banner;
    }

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

    public String getLogo() {
        return logo;
    }

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

    public String getSerial() {
        return serial;
    }

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

    public Long getGuarantee() {
        return guarantee;
    }

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

    public Long getDailyClockCredit() {
        return dailyClockCredit;
    }

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

    public Long getExtraClockCredit() {
        return extraClockCredit;
    }

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

    public Long getIsExtraClock() {
        return isExtraClock;
    }

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

    public List<LocalDateTime> getExtraClockTimeRange() {
        return extraClockTimeRange;
    }

    public void setExtraClockTimeRange(List<LocalDateTime> extraClockTimeRange) {
        this.extraClockTimeRange = extraClockTimeRange;
    }

    public LocalTime getNursingTime() {
        return nursingTime;
    }

    public void setNursingTime(LocalTime nursingTime) {
        this.nursingTime = nursingTime;
    }

    public String getIotVersion() {
        return iotVersion;
    }

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

    public String getIotUpgradeData() {
        return iotUpgradeData;
    }

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

    public Integer getIsScanCode() {
        return isScanCode;
    }

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

    public Integer getIsPurchase() {
        return isPurchase;
    }

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

    public String getShoppingAppid() {
        return shoppingAppid;
    }

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

    public String getShoppingPath() {
        return shoppingPath;
    }

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

    public String getBluetoothConnecting() {
        return bluetoothConnecting;
    }

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

    public String getBluetoothClosed() {
        return bluetoothClosed;
    }

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

    public String getIotVersionUpgrade() {
        return iotVersionUpgrade;
    }

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

    public Long getSortNo() {
        return sortNo;
    }

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

    public String getManualCodeBinding() {
        return manualCodeBinding;
    }

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

    public String getScanCodeBinding() {
        return scanCodeBinding;
    }

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

    public List<WxInstrumentFileRelate> getNurseList() {
        return nurseList;
    }

    public void setNurseList(List<WxInstrumentFileRelate> nurseList) {
        this.nurseList = nurseList;
    }

    public List<WxInstrumentFileRelate> getIntroduceList() {
        return introduceList;
    }

    public void setIntroduceList(List<WxInstrumentFileRelate> introduceList) {
        this.introduceList = introduceList;
    }

    public String getMiniTagIds() {
        return miniTagIds;
    }

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

    public String getWecomTagIds() {
        return wecomTagIds;
    }

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

    public Integer getBindingCredit() {
        return bindingCredit;
    }

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

    public List<Integer> getModeIdsValue() {
        return modeIdsValue;
    }

    public void setModeIdsValue(List<Integer> modeIdsValue) {
        this.modeIdsValue = modeIdsValue;
    }

    public String getBluetoothConnectingTitle() {
        return bluetoothConnectingTitle;
    }

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

    public String getBluetoothConnectingContent() {
        return bluetoothConnectingContent;
    }

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

    public String getBluetoothClosedTitle() {
        return bluetoothClosedTitle;
    }

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

    public String getBluetoothClosedContent() {
        return bluetoothClosedContent;
    }

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

    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 getBluetoothConnectFailContent() {
        return bluetoothConnectFailContent;
    }

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

    public List<Integer> getNewModeIdList() {
        return newModeIdList;
    }

    public void setNewModeIdList(List<Integer> newModeIdList) {
        this.newModeIdList = newModeIdList;
    }

    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;
    }
}
