package com.yonge.cooleshow.biz.dal.entity;

import java.math.BigDecimal;
import java.time.DayOfWeek;
import java.time.LocalDate;

import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;

import com.yonge.cooleshow.biz.dal.enums.DeviceTypeEnum;
import com.yonge.cooleshow.biz.dal.enums.FeatureType;
import com.yonge.cooleshow.biz.dal.enums.HeardLevelEnum;
import com.yonge.cooleshow.common.entity.BaseEntity;
import com.yonge.toolset.utils.date.DateUtil;

/**
 * 对应数据库表(sys_music_compare_record):
 */
public class SysMusicCompareRecord extends BaseEntity {

	/**  */
	private Long id;

	/** 行为编号 */
	private String behaviorId;
	
	/** 用户编号 */
	private Long userId;
	
	/** 教程编号 */
	private Long musicSheetId;

	private HeardLevelEnum heardLevel;

	private String sysMusicScoreName;
	
	/** 评分数据 */
	private String scoreData;

	private int notesDataIndex;


	// 自定义配置 默认空字符串
	private String customConfiguration ="";

	/** 总分 */
	private BigDecimal score;

	/** 音准 */
	private BigDecimal intonation;

	/** 节奏 */
	private BigDecimal cadence;

	/** 完成度 */
	private BigDecimal integrity;

	/** 录音文件地址 */
	private String recordFilePath;

	private String videoFilePath;

	/** 周一日期 */
	private String monday = LocalDate.now().with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue()).toString();

	private FeatureType feature;
	
	/** 创建时间 */
	private java.util.Date createTime;

	private DeviceTypeEnum deviceType;

	private float sourceTime = 0;

	private float playTime = 0;

	private int speed = 90;

	private String clientId;
	
	private String partIndex;

	@ApiModelProperty("音乐过期 0：否 1：是")
	private Integer expire;

	@ApiModelProperty("活动项目id")
	private Long evaluationId;

	public Long getEvaluationId() {
		return evaluationId;
	}

	public void setEvaluationId(Long evaluationId) {
		this.evaluationId = evaluationId;
	}

	public String getCustomConfiguration() {
		return customConfiguration;
	}

	public void setCustomConfiguration(String customConfiguration) {
		this.customConfiguration = customConfiguration;
	}

	public Integer getExpire() {
		return expire;
	}

	public void setExpire(Integer expire) {
		this.expire = expire;
	}

	public SysMusicCompareRecord() {
	}

	public SysMusicCompareRecord(FeatureType feature) {
		this.feature = feature;
	}

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

	public String getBehaviorId() {
		return behaviorId;
	}

	public void setBehaviorId(String behaviorId) {
		this.behaviorId = behaviorId;
	}

	public void setUserId(Long userId){
		this.userId = userId;
	}
	
	public Long getUserId(){
		return this.userId;
	}

	public String getClientId() {
		return clientId;
	}

	public void setClientId(String clientId) {
		this.clientId = clientId;
	}

	public HeardLevelEnum getHeardLevel() {
		return heardLevel;
	}

	public void setHeardLevel(HeardLevelEnum heardLevel) {
		this.heardLevel = heardLevel;
	}

	public Long getMusicSheetId() {
		return musicSheetId;
	}

	public void setMusicSheetId(Long musicSheetId) {
		this.musicSheetId = musicSheetId;
	}

	public String getSysMusicScoreName() {
		return sysMusicScoreName;
	}

	public void setSysMusicScoreName(String sysMusicScoreName) {
		this.sysMusicScoreName = sysMusicScoreName;
	}

	public void setScoreData(String scoreData){
		this.scoreData = scoreData;
	}
	
	public String getScoreData(){
		return this.scoreData;
	}

	public int getNotesDataIndex() {
		return notesDataIndex;
	}

	public void setNotesDataIndex(int notesDataIndex) {
		this.notesDataIndex = notesDataIndex;
	}

	public BigDecimal getScore() {
		return score;
	}

	public void setScore(BigDecimal score) {
		this.score = score;
	}

	public BigDecimal getIntonation() {
		return intonation;
	}

	public void setIntonation(BigDecimal intonation) {
		this.intonation = intonation;
	}

	public BigDecimal getCadence() {
		return cadence;
	}

	public void setCadence(BigDecimal cadence) {
		this.cadence = cadence;
	}

	public BigDecimal getIntegrity() {
		return integrity;
	}

	public void setIntegrity(BigDecimal integrity) {
		this.integrity = integrity;
	}

	public String getRecordFilePath() {
		return recordFilePath;
	}

	public void setRecordFilePath(String recordFilePath) {
		this.recordFilePath = recordFilePath;
	}

	public String getVideoFilePath() {
		return videoFilePath;
	}

	public void setVideoFilePath(String videoFilePath) {
		this.videoFilePath = videoFilePath;
	}

	public DeviceTypeEnum getDeviceType() {
		return deviceType;
	}

	public void setDeviceType(DeviceTypeEnum deviceType) {
		this.deviceType = deviceType;
	}

	public float getSourceTime() {
		return sourceTime;
	}

	public void setSourceTime(float sourceTime) {
		this.sourceTime = sourceTime;
	}

	public float getPlayTime() {
		return playTime;
	}

	public void setPlayTime(float playTime) {
		this.playTime = playTime;
	}

	public int getSpeed() {
		return speed;
	}

	public void setSpeed(int speed) {
		this.speed = speed;
	}

	public String getMonday() {
		return monday;
	}

	public void setMonday(String monday) {
		this.monday = monday;
	}

	public FeatureType getFeature() {
		return feature;
	}

	public void setFeature(FeatureType feature) {
		this.feature = feature;
	}

	public void setCreateTime(java.util.Date createTime){
		this.createTime = createTime;
	}
	
	public java.util.Date getCreateTime(){
		return this.createTime;
	}
			
	public String getPartIndex() {
		return partIndex;
	}

	public void setPartIndex(String partIndex) {
		this.partIndex = partIndex;
	}

	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}

}
