package com.ssj.service.weixin.zuoyb.service;

import com.ssj.bean.weixin.zyb.domain.ZuoybStudentPush;
import com.ssj.framework.core.common.service.BaseService;
import com.ssj.framework.core.util.ResponseEntity;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.Date;
import java.util.List;
import java.util.Map;

/** 
 * @author  ZhangCaibao 
 * @version 2017年7月21日 上午11:27:11 
 * 类说明 
 */
public interface ZuoybStudentPushSerivce extends BaseService<ZuoybStudentPush, String>{

	public  Page<ZuoybStudentPush>  findByPage(Map<String, Object> params, Pageable sp);
	
	 public Page<Map<String, Object>> getZuoybStudentPushList(Map<String, Object> searchParams, Pageable pageable);
	/**
	 * 查询某个馆，会员的某个时段的某天的 打分报告
	* @param libId
	* @param vipId
	* @param courseHour
	* @param date
	* @return
	* 创建人：ZhangCaibao 
	* 2017年9月12日 下午5:39:31 
	* @ZuoybStudentPush
	 */
	public ZuoybStudentPush  findByLibIdAndVipIdAndCourseHour(String libId,String vipId,String courseHour,String date);
	public ZuoybStudentPush findByVipIdAndDate(String vipId, String date);
	public List<ZuoybStudentPush>findByVipId(String vipId);
	public ZuoybStudentPush  findByVipIdToDay(String vipId);
	/**
	 * 老师管理学生端
	* @param searchParams
	* @param pageable
	* @return
	* 创建人：ZhangCaibao 
	* 2017年9月16日 上午7:50:56 
	* @Page<Map<String,Object>>
	 */
	 public Page<Map<String, Object>> zuoybStudentPushList(Map<String, Object> searchParams, Pageable pageable);
	 

		/**
		 *  计算时间内这天，该馆有多少打分人数，
		* @param libId
		* @param date
		* @return
		* 创建人：ZhangCaibao 
		* 2017年10月16日 下午2:12:04 
		* @Integer
		 */
	 public List<ZuoybStudentPush> yesterdayLibIdpush(String libId,String date);
	 /**
	  *  获取最近三十天的签到签离时长，没有签离默认给2小时，统计中时长
	 * @param vipId
	 * @return
	 * 创建人：ZhangCaibao 
	 * 2017年10月31日 下午3:35:27 
	 * @long
	  */
	 public long getXqLearningTime(String vipId);
	 /**
	  * 获取最近三十天 错题总数，答题总数，正确百分比
	 * @param vipId
	 * @return
	 * 创建人：ZhangCaibao 
	 * 2017年10月31日 下午3:41:20 
	 * @Map<String,Object>
	  */
	 public Map<String,Object> getXqTopicCount(String vipId);
	 /**
	  * 根据当天的报告，查询错题点，和总题点，学习建议
	 * @param pushId
	 * @return
	 * 创建人：ZhangCaibao 
	 * 2017年11月6日 下午6:04:15 
	 * @Map<String,Object>
	  */
	 public Map<String,Object> getStudentWork(String pushId);
	 /**
	  * 获取最近7天作业报告情况
	 * @param vipId
	 * @return
	 * 创建人：ZhangCaibao 
	 * 2017年10月31日 下午4:37:22 
	 * @List<Map<String,Object>>
	  */
	 public List<Map<String, Object>> getXqWeekReport(String vipId);
	 /**
	  * 查询今天是否有作业报告
	 * @param vipId
	 * @return
	 * 创建人：ZhangCaibao 
	 * 2017年11月6日 下午5:35:26 
	 * @Integer
	  */
	 public Integer getToDayAndVipId(String vipId);
	 /**
	  * 取当天打分的老师，只取一条，获取老师的名称，和头像。
	 * @param vipId
	 * @return
	 * 创建人：ZhangCaibao 
	 * 2017年11月7日 上午10:20:53 
	 * @Map<String,Object>
	  */
	 public Map<String,Object> getTeacherAndPhoto(String vipId);
	 /**
		 * 获取该用户当天签到的时间，
		* @param vipId
		* @return
		* 创建人：ZhangCaibao 
		* 2017年11月7日 上午11:09:58 
		* @String
		 */
	 public String getToDayVipSubscribe(String vipId,String libId);

	 public int countDistinctByTeacherIdAndType(String teacherId, int type);

	 public List<ZuoybStudentPush> findTodayPushByLibIdAndType(int type, List<String> libId);
	 
	 public ZuoybStudentPush findSuggestByStudentWorkId(String studentWorkId);

	/**
	 * 查询学生的最新一条未反馈的记录
	 * @param teacherId
	 * @param vipId
	 * @return
	 */
	 public ZuoybStudentPush findLastStudentPush (String teacherId, String vipId);

	/**
	 * 查询学生的最新一条未反馈的记录
	 * @param vipId
	 * @return
	 */
	 public ZuoybStudentPush findLastStudentPush (String vipId);

	/**
	 * 查询当月家长查阅的报告数
	 * @param vipId
	 * @param beginTim
	 * @param endTime
	 * @return
	 */
	 public int findParentViewCount (String vipId, String beginTim, String endTime);

	/**
	 * 家长满意度
	 * @param vipId
	 * @return
	 */
	 public float avgParentPraise (String vipId);

	/**
	 * 最新的一条小于三星的老师建议
	 * @param vipId
	 * @return
	 */
	 public ZuoybStudentPush findLastLess3Suggest (String vipId);

	 public ZuoybStudentPush findOneSuggestNotNull (String vipId);

	/**
	 * 查询一段时间内已反馈的报告数
	 * @param vipId
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	 public int findDatesReportCount (String vipId, Date beginTime, Date endTime);
	 
	 public ResponseEntity sendWork(String libId,String vipId,String userId,String childName, String pushId );

	/**
	 * 查询某段时间的push记录
	 * @param vipId
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	 public List<ZuoybStudentPush> findRangDatePushByVipId (String vipId, Date beginTime, Date endTime);

	/**
	 * 更新zyb_student_push.type，type=0但是学生上传了作业，则type需要更新为4
	 *
	 * @return 更新数量
	 */
    int updateType();

	/**
	 * 查找学生已经发送过多少份反馈报告
	 * @param vipId
	 * @return
	 */
	int findCountByVipId(String vipId);

	/**
	 * 更新反馈报告并通知家长
	 *
	 * @return 更新数量
	 */
	int updateFeedbackReportAndNotifyParent();
}
