package com.ssj.bean.weixin.zyb.domain;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONField;
import com.ssj.bean.common.framework.core.domain.BaseEntity;

/** 
 * @author  ZhangCaibao 
 * @version 2017年11月2日 上午11:04:32 
 * 类说明 
 */
@Entity
@Table(name = "zyb_student_bg_details")
public class ZuoybStudentBgDetails extends BaseEntity{

	/**
	 * 
	 */
	private static final long serialVersionUID = 8952883127219679613L;
	/**
	 * 需掌握的知识点json数据
	 */
	private String knowHow;
	
	/**
	 * 排序
	 */
	private Integer num;
	/**
	 * 知识点数
	 */
	private Integer howSize;
	/**
	 * 本周关注的重点知识点json数据
	 */
	private String  emphasisKnowHow;
	
	/**
	 * 待加强知识点统计图数据json数据
	 */
	private String dzsd;
	
	/**
	 *  科目
	 */
	private String courseName;
	/**
	 * 周报告
	 */
	private String studentBgId;
	/**
	 * 需要掌握的知识点
	 */
	private List<ZuoybStudentWorkHow> workHowList = new ArrayList<ZuoybStudentWorkHow>();
	/**
	 * 错题 需要关注点
	 */
	private List<ZuoybStudentWorkHowDetails> howDetailsList = new ArrayList<ZuoybStudentWorkHowDetails>();
	/**
	 * 已掌握
	 */
	private String gotIt;
	/**
	 * 未掌握
	 */
	private String notIt;
	
	private List<ZuoybStudentWorkHowDetails> gotHowDetailsList = new ArrayList<ZuoybStudentWorkHowDetails>();
	/**
	 * 未掌握
	 */
	private List<ZuoybStudentWorkHowDetails> notHowDetailsList = new ArrayList<ZuoybStudentWorkHowDetails>();
	
	private List<ZuoybKnowHow> knowHowModuleList = new  ArrayList<ZuoybKnowHow>();
	/**
	 * 当月的所有模块大纲。
	 */
	private String knowHowModule;
	
	/**
	 * 以下是最新的
	 */
	/**
	 * 学情分析
	 */
	private String suggest;
	/**
	 * 各项掌握指标情况（模块-单元-知识点） JSON数据
	 */
	private String knowModuleJson ;
	/**
	 * 各项掌握指标情况（模块-单元-知识点）
	 */
	private List<ZuoybKnowModule> knowModuleList=new  ArrayList<ZuoybKnowModule>();
	/**
	 * 本月待加强的知识点JSON 数据
	 */
	private String featureJson ;
	/**
	 * 本月待加强的知识点
	 */
	private List<ZuoybStudentBgDetailsFeature> featureList =new ArrayList<ZuoybStudentBgDetailsFeature>();
	/**
	 * 下月待加强的知识点JSON 数据
	 */
	private String nextMonthHowDtailsJson;
	/**
	 * 下月待加强的知识点
	 */
	private List<String> nextMonthHowDtails = new ArrayList<String>();
	/**
	 *  排序后的常错的知识点（本月）JSON数据
	 */
	private String thisMonthHowDtailsJson;
	/**
	 * 排序后的常错的知识点（本月）
	 */
	private List<String> thisMonthHowDtails = new ArrayList<String>();
	@JSONField(serialize=false)
	public String getKnowHow() {
		return knowHow;
	}
	public void setKnowHow(String knowHow) {
		this.knowHow = knowHow;
	}
	public Integer getNum() {
		return num;
	}
	public void setNum(Integer num) {
		this.num = num;
	}
	@JSONField(serialize=false)
	public String getEmphasisKnowHow() {
		return emphasisKnowHow;
	}
	public void setEmphasisKnowHow(String emphasisKnowHow) {
		this.emphasisKnowHow = emphasisKnowHow;
	}
	public String getCourseName() {
		return courseName;
	}
	public void setCourseName(String courseName) {
		this.courseName = courseName;
	}
	public String getStudentBgId() {
		return studentBgId;
	}
	public void setStudentBgId(String studentBgId) {
		this.studentBgId = studentBgId;
	}
	@JSONField(serialize=false)
	public Integer getHowSize() {
		return howSize;
	}
	public void setHowSize(Integer howSize) {
		this.howSize = howSize;
	}
	@Transient
	@JSONField(serialize=false)
	public List<ZuoybStudentWorkHow> getWorkHowList() {
		if(workHowList!=null&& workHowList.size()>0){
			return workHowList;
		}
		if(knowHow!=null){
			return JSON.parseArray(knowHow,ZuoybStudentWorkHow.class);
		}
		return workHowList;
	}
	public void setWorkHowList(List<ZuoybStudentWorkHow> workHowList) {
		this.workHowList = workHowList;
	}
	@Transient
	@JSONField(serialize=false)
	public List<ZuoybStudentWorkHowDetails> getHowDetailsList() {
		if(howDetailsList!=null&& howDetailsList.size()>0){
			return howDetailsList;
		}
		if(emphasisKnowHow!=null){
			return JSON.parseArray(emphasisKnowHow,ZuoybStudentWorkHowDetails.class);
		}
		
		return howDetailsList;
	}
	public void setHowDetailsList(List<ZuoybStudentWorkHowDetails> howDetailsList) {
		this.howDetailsList = howDetailsList;
	}
	@JSONField(serialize=false)
	public String getDzsd() {
		return dzsd;
	}
	public void setDzsd(String dzsd) {
		this.dzsd = dzsd;
	}
	@JSONField(serialize=false)
	public String getGotIt() {
		return gotIt;
	}
	public void setGotIt(String gotIt) {
		this.gotIt = gotIt;
	}
	@JSONField(serialize=false)
	public String getNotIt() {
		return notIt;
	}
	public void setNotIt(String notIt) {
		this.notIt = notIt;
	}
	@Transient
	@JSONField(serialize=false)
	public List<ZuoybStudentWorkHowDetails> getNotHowDetailsList() {
		if(notHowDetailsList!=null&& notHowDetailsList.size()>0){
			return notHowDetailsList;
		}
		if(notIt!=null){
			return JSON.parseArray(notIt,ZuoybStudentWorkHowDetails.class);
		}
		
		return notHowDetailsList;
	}
	@Transient
	@JSONField(serialize=false)
	public List<ZuoybStudentWorkHowDetails> getGotHowDetailsList() {
		if(gotHowDetailsList!=null&& gotHowDetailsList.size()>0){
			return gotHowDetailsList;
		}
		if(gotIt!=null){
			return JSON.parseArray(gotIt,ZuoybStudentWorkHowDetails.class);
		}
		
		return gotHowDetailsList;
	}
	public void setGotHowDetailsList(
			List<ZuoybStudentWorkHowDetails> gotHowDetailsList) {
		this.gotHowDetailsList = gotHowDetailsList;
	}
	
	public void setNotHowDetailsList(
			List<ZuoybStudentWorkHowDetails> notHowDetailsList) {
		this.notHowDetailsList = notHowDetailsList;
	}
	@Transient
	@JSONField(serialize=false)
	public List<ZuoybKnowHow> getKnowHowModuleList() {
		if(knowHowModuleList!=null&& knowHowModuleList.size()>0){
			return knowHowModuleList;
		}
		if(knowHowModule!=null){
			return JSON.parseArray(knowHowModule,ZuoybKnowHow.class);
		}
		
		return knowHowModuleList;
	}
	public void setKnowHowModuleList(List<ZuoybKnowHow> knowHowModuleList) {
		this.knowHowModuleList = knowHowModuleList;
	}
	@JSONField(serialize=false)
	public String getKnowHowModule() {
		return knowHowModule;
	}
	public void setKnowHowModule(String knowHowModule) {
		this.knowHowModule = knowHowModule;
	}
	
	
	@JSONField(serialize=false)
	public String getKnowModuleJson() {
		return knowModuleJson;
	}
	public void setKnowModuleJson(String knowModuleJson) {
		this.knowModuleJson = knowModuleJson;
	}
	@Transient
	public List<ZuoybKnowModule> getKnowModuleList() {
		
		if(knowModuleList!=null&& knowModuleList.size()>0){
			return knowModuleList;
		}
		if(knowModuleJson!=null){
			return JSON.parseArray(knowModuleJson,ZuoybKnowModule.class);
		}
		return knowModuleList;
	}
	public void setKnowModuleList(List<ZuoybKnowModule> knowModuleList) {
		this.knowModuleList = knowModuleList;
	}
	@JSONField(serialize=false)
	public String getFeatureJson() {
		return featureJson;
	}
	public void setFeatureJson(String featureJson) {
		this.featureJson = featureJson;
	}
	@Transient
	public List<ZuoybStudentBgDetailsFeature> getFeatureList() {
		/*if(featureList!=null&& featureList.size()>0){
			return featureList;
		}
		if(featureJson!=null){
			return JSON.parseArray(featureJson,ZuoybStudentBgDetailsFeature.class);
		}*/
		return featureList;
		
	}
	public void setFeatureList(List<ZuoybStudentBgDetailsFeature> featureList) {
		this.featureList = featureList;
	}
	@JSONField(serialize=false)
	public String getNextMonthHowDtailsJson() {
		return nextMonthHowDtailsJson;
	}
	public void setNextMonthHowDtailsJson(String nextMonthHowDtailsJson) {
		this.nextMonthHowDtailsJson = nextMonthHowDtailsJson;
	}
	@Transient
	public List<String> getNextMonthHowDtails() {
		return nextMonthHowDtails;
	}
	public void setNextMonthHowDtails(List<String> nextMonthHowDtails) {
		this.nextMonthHowDtails = nextMonthHowDtails;
	}
	@JSONField(serialize=false)
	public String getThisMonthHowDtailsJson() {
		return thisMonthHowDtailsJson;
	}
	public void setThisMonthHowDtailsJson(String thisMonthHowDtailsJson) {
		this.thisMonthHowDtailsJson = thisMonthHowDtailsJson;
	}
	@Transient
	public List<String> getThisMonthHowDtails() {
		return thisMonthHowDtails;
	}
	public void setThisMonthHowDtails(List<String> thisMonthHowDtails) {
		this.thisMonthHowDtails = thisMonthHowDtails;
	}
	@Transient
	public String getSuggest() {
		return suggest;
	}
	public void setSuggest(String suggest) {
		this.suggest = suggest;
	}
	

	
	
	
	
	
	
	
	
	
	
	
	
	
	
    
	
}
