package cn.com.countrygarden.bi.main.dao.microSatisfy;

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

import org.apache.ibatis.annotations.Param;

import com.github.pagehelper.PageRowBounds;

import cn.com.countrygarden.bi.main.controller.microSatisfy.vo.UpdateQualityVO;
import cn.com.countrygarden.bi.main.model.dup.ManagerData;
import cn.com.countrygarden.bi.main.model.microSatisfy.MicroSatisfyAnswerCodeModel;
import cn.com.countrygarden.bi.main.model.microSatisfy.MicroSatisfyCommModel;
import cn.com.countrygarden.bi.main.model.microSatisfy.MicroSatisfyModel;
import cn.com.countrygarden.bi.main.model.microSatisfy.MicroSatisfyOrganDetailModel;
import cn.com.countrygarden.bi.main.model.microSatisfy.MicroSatisfyOrginModel;
import cn.com.countrygarden.bi.main.model.microSatisfy.MicroSatisfyPointModel;
import cn.com.countrygarden.bi.main.model.microSatisfy.MicroSatisfyRankModel;

/**
 * 小业主满意度
 * @author shitong
 *
 */
public interface MicroSatisfyMapper{
	/**
	 * @描述 批量导入数据
	 * @作者 张世通
	 * @时间 2018年6月21日
	 * @版本 
	 * @param list
	 */
	int addSatisfyList(List<MicroSatisfyModel> list);
	
	
	
	int addAnswerCode(List<MicroSatisfyAnswerCodeModel> list);
	
	void deleteAnswerCode();
	
	
	int addRegionalObjectives(MicroSatisfyPointModel list);
	    
	void deleteRegionalObjectives();
	/**
	 * @描述 导入原始数据
	 * @作者 张世通
	 * @时间 2018年6月29日
	 * @版本 
	 * @param list
	 */
	void addSatisfyListOrgin(List<MicroSatisfyOrginModel> list);
	/**
	 * @描述 查询码表
	 * @作者 张世通
	 * @时间 2018年6月29日
	 * @版本 
	 * @return
	 */
	List<MicroSatisfyAnswerCodeModel> queryAnswerCode();
	
	/**
	 * @描述 按批次号查询数据
	 * @作者 张世通
	 * @时间 2018年6月22日
	 * @版本 
	 * @param pid
	 * @param timeStr
	 * @return
	 */
	List<Map<String, Object>> queryImportData(@Param("pid") String pid,@Param("timeStr") String timeStr
			,PageRowBounds pageRowBounds);
	
	/**
	 * @描述 查询批次号
	 * @作者 张世通
	 * @时间 2018年6月22日
	 * @版本 
	 * @return
	 */
	List<Map<String,String>> queryPid();
	
	/**
	 * @描述 查询当月管家满意度
	 * @作者 张世通
	 * @时间 2018年6月22日
	 * @版本 
	 * @param pageRowBounds
	 * @return
	 */
	List<Map<String,String>> queryManagerSatisfy(PageRowBounds pageRowBounds,@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("organId")String organId);
	/**
	 * @描述 查询当月管家满意度排名
	 * @作者 张世通
	 * @时间 2018年6月22日
	 * @版本 
	 * @param pageRowBounds
	 * @return
	 */
	List<Map<String,String>> queryManagerSatisfyRank(PageRowBounds pageRowBounds,@Param("timeStr")String timeStr
			,@Param("organId")String organId,@Param("commId")String commId);
	/**
	 * @描述 查询管家满意度折线图
	 * @作者 张世通
	 * @时间 2018年6月28日
	 * @版本 
	 * @param timeStr
	 * @param organId
	 * @param commId
	 * @return
	 */       
	Map<String,Object> queryManagerScore(@Param("timeStr")String timeStr,@Param("organId")String organId,
			@Param("commId")String commId);
	
	/**
	 * @描述 查询当月区域满意度排名
	 * @作者 张世通
	 * @时间 2018年6月23日
	 * @版本 
	 * @param pageRowBounds
	 * @return ,@Param("endDate")String endDate
	 */
	List<MicroSatisfyRankModel> queryOrganRank(PageRowBounds pageRowBounds,@Param("beginDate")String beginDate);
	/**
	 * @描述 查询当月项目满意度排名
	 * @作者 张世通
	 * @时间 2018年6月23日
	 * @版本 
	 * @param pageRowBounds
	 * @return
	 */
	List<MicroSatisfyRankModel> queryCommRank(PageRowBounds pageRowBounds,@Param("timeStr")String timeStr);
	/**
	 * @描述 查询项目满意度基本信息(数据处理)
	 * @作者 张世通
	 * @时间 2018年6月26日
	 * @版本 
	 * @return
	 */
	List<MicroSatisfyOrganDetailModel> queryOrganSatisfyDetail(@Param("timeStr")String timeStr,@Param("pid") String pid);
	/**
	 * @描述 新增区域项目详情
	 * @作者 张世通
	 * @时间 2018年6月26日
	 * @版本 
	 * @param list
	 */
	void insertOrganCommDetail(List<MicroSatisfyOrganDetailModel> list);
	
	/**
	 * @描述 豁免并锁定
	 * @作者 张世通
	 * @时间 2018年6月26日
	 * @版本 
	 * @param organId
	 * @param commId
	 * @param timeStr
	 */
	void updateOragnCommDetail(@Param("list") List<Map<String,Object>> list,@Param("userCode") String userCode);

	   /**
     * @描述 查询区域项目详情
     * @作者 张世通
     * @时间 2018年6月26日
     * @版本 
     * @param pageRowBounds
     * @param organId
     * @param timeStr
     * @return
     */
    List<MicroSatisfyOrganDetailModel> queryOrganSatisfyDetailByOrganId(PageRowBounds pageRowBounds
            ,@Param("organId")String organId,@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("pid")String pid,@Param("date")int date);
	
	/**
	 * @描述 查询项目详情
	 * @作者 张世通
	 * @时间 2018年6月26日
	 * @版本 
	 * @param pageRowBounds
	 * @param organId
	 * @param timeStr
	 * @return
	 */
	MicroSatisfyOrganDetailModel queryCommDetail(@Param("organId")String organId,@Param("timeStr")String timeStr,
			@Param("commId")String commId,@Param("pid")String pid);
	
	/**
	 * @描述 查询区域排名(数据导入)
	 * @作者 张世通
	 * @时间 2018年6月27日
	 * @版本 
	 * @param pid
	 * @param timeStr
	 * @return
	 */
	List<MicroSatisfyRankModel> queryOrganRankImport(@Param("pid")String pid,@Param("timeStr")String timeStr);
	/**
	 * @描述 查询项目排名(数据导入)
	 * @作者 张世通
	 * @时间 2018年6月27日
	 * @版本 
	 * @param pid
	 * @param timeStr
	 * @return
	 */
	List<MicroSatisfyRankModel> queryCommRankImport(@Param("pid")String pid,@Param("timeStr")String timeStr);
	
	/**
	 * @描述 查询区域目标
	 * @作者 张世通
	 * @时间 2018年6月27日
	 * @版本 
	 * @param organCode
	 * @return
	 */
	MicroSatisfyPointModel queryOrganPointByOrganCode(@Param("organId")String organId);
	/**
	 * @描述 查询项目目标
	 * @作者 张世通
	 * @时间 2018年6月27日
	 * @版本 
	 * @param organId
	 * @param commId
	 * @return
	 */
	MicroSatisfyPointModel queryCommPointByCommCode(@Param("commId")String commId);
	/**
	 * @描述 查询上月区域排名信息
	 * @作者 张世通
	 * @时间 2018年6月27日
	 * @版本 
	 * @param organId
	 * @return
	 */
	MicroSatisfyRankModel queryOrganRankModelById(@Param("organId")String organId,@Param("timeStr")String timeStr);
	/**
	 * @描述 查询上月项目排名信息
	 * @作者 张世通
	 * @时间 2018年6月27日
	 * @版本 
	 * @param organId
	 * @param commId
	 * @return
	 */
	MicroSatisfyRankModel queryCommRankModelById(@Param("organId")String organId,@Param("commId")String commId,@Param("timeStr")String timeStr);
	
	/**
	 * @描述 新增区域排名信息
	 * @作者 张世通
	 * @时间 2018年6月27日
	 * @版本 
	 * @param list
	 */
	void addOrganRank(List<MicroSatisfyRankModel> list);
	
	/**
	 * @描述 新增项目排名信息
	 * @作者 张世通
	 * @时间 2018年6月27日
	 * @版本 
	 * @param list
	 */
	void addCommRank(List<MicroSatisfyRankModel> list);
	/**
	 * @描述 清空区域项目基础信息表
	 * @作者 张世通
	 * @时间 2018年6月27日
	 * @版本 
	 * @param timeStr
	 */
	void clearOrganDetailByTimeStr(@Param("timeStr") String timeStr);
	/**
	 * @描述 清空区域排名信息表
	 * @作者 张世通
	 * @时间 2018年6月27日
	 * @版本 
	 * @param timeStr
	 */
	void clearOrganRankByTimeStr(@Param("timeStr") String timeStr);
	/**
	 * @描述 清空项目排名信息表
	 * @作者 张世通
	 * @时间 2018年6月27日
	 * @版本 
	 * @param timeStr
	 */
	void clearCommRankByTimeStr(@Param("timeStr") String timeStr);
	/**
	 * @描述 判断是否已经导入当月数据
	 * @作者 张世通
	 * @时间 2018年6月27日
	 * @版本 
	 * @param timeStr
	 * @return
	 */
	void deleteImport(@Param("timeStr") String timeStr);
	/**
	 * @描述 查询当月批次统计信息
	 * @作者 张世通
	 * @时间 2018年6月28日
	 * @版本 
	 * @return
	 */ 
	Map<String,Object> queryDataCount(@Param("beginDate") String beginDate,@Param("endDate") String endDate,@Param("organId") String organId);
	/**
	 * @描述 查询区域批次统计信息
	 * @作者 张世通
	 * @时间 2018年6月28日
	 * @版本 
	 * @return
	 */
	Map<String,Object> queryOrganCount(@Param("timeStr") String timeStr,@Param("organId") String organId,@Param("pid") String pid);
	/**
	 * @描述 查询项目批次统计信息
	 * @作者 张世通
	 * @时间 2018年6月28日
	 * @版本 
	 * @return
	 */
	Map<String,Object> queryCommCount(@Param("timeStr") String timeStr,@Param("organId") String organId,@Param("commId") String commId,@Param("pid") String pid);
	
	/**
	 * @描述 查询全国走势图
	 * @作者 张世通
	 * @时间 2018年6月28日
	 * @版本 
	 * @param timeStr
	 * @return
	 */
	List<MicroSatisfyOrganDetailModel> queryCountryScore(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("Identification") String Identification,@Param("organId") String organId);
	/**
	 * @描述 查询区域走势图
	 * @作者 张世通
	 * @时间 2018年6月28日
	 * @版本 
	 * @param timeStr
	 * @return
	 */
	Map<String,Object> queryOrganScore(@Param("timeStr") String timeStr,@Param("organId") String organId,@Param("pid") String pid);
	/**
	 * @描述 查询项目走势图
	 * @作者 张世通
	 * @时间 2018年6月28日
	 * @版本 
	 * @param timeStr
	 * @return
	 */
	List<MicroSatisfyOrganDetailModel> queryCommScore(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("organId") String organId,@Param("commId") String commId);
	/**
	 * @描述 查询将要转换的基础数据
	 * @作者 张世通
	 * @时间 2018年7月12日
	 * @版本 
	 * @return
	 */
	List<MicroSatisfyModel> queryDataImportBase();
	/**
	 * @描述 根据工单号，问题Id查询答案(得分或语音内容)
	 * @作者 张世通
	 * @时间 2018年7月12日
	 * @版本 
	 * @param bussinessId
	 * @param answerId
	 * @return
	 */
	String queryBaseAnswer(@Param("bussinessId") String bussinessId,@Param("answerId") String answerId);
	/**
	 * @描述 转换成功清空数据
	 * @作者 张世通
	 * @时间 2018年7月12日
	 * @版本
	 */
	void clearBaseData();
	/**
	 * @描述 修改项目类型
	 * @作者 李子民
	 * @时间 2018年7月17日
	 * @版本
	 */
	void updateQuality(Map<String,String> vo);
	/**
	 * @描述 获取评价
	 * @作者 李子民
	 * @时间 2018年7月17日
	 * @版本
	 */
	List<Map<String, Object>>  selectVoice(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("organId") String organId,@Param("commId") String commId);
	/**
	 * @描述 满意度得分分布
	 * @作者 李子民
	 * @时间 2018年7月17日
	 * @版本
	 */
	List<Map<String,Object>> scoreDistribution(Integer commId);
	
	/**
	 * @描述 有效样本数
	 * @作者 李子民
	 * @时间 2018年7月17日
	 * @版本
	 */
	
	Integer countTake(Integer commId);
	
	/**
	 * @描述 无效样本数
	 * @作者 李子民
	 * @时间 2018年7月17日
	 * @版本
	 */
	Integer countNotTake(@Param("commId")Integer commId,@Param("beginDate")String beginDate,@Param("endDate")String endDate);
	
	
	
	   /**
     * @描述 查询项目类型
     * @作者 李子民
     * @时间 2018年7月17日
     * @版本
     */
    Integer queryQuality(@Param("commId")Integer commId,@Param("beginDate")String beginDate,@Param("endDate")String endDate);
    
    
    
    /**
     * @描述 查询赦免数
     * @作者 李子民
     * @时间 2018年7月17日
     * @版本
     */
    Integer countExempt(@Param("commId")Integer commId,@Param("beginDate")String beginDate,@Param("endDate")String endDate);
    
    
    
    /**
     * @描述 查询全国排名
     * @作者 李子民
     * @时间 2018年7月17日
     * @版本
     */
    List<MicroSatisfyRankModel> queryNationalRankings(@Param("timeStr") String timeStr);
    

  //获取年度满意度所需要的参数
    List<MicroSatisfyOrganDetailModel>  queryRegionalAnalysis(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("organId") String organId,PageRowBounds pageRowBounds,@Param("innIds")List<Map<String, String>> innIds);
    

    
    //查询项目评分和不满意统计
    MicroSatisfyOrganDetailModel  queryProjectSummary(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("organId") String organId,@Param("commId") String commId);
    
    
    MicroSatisfyOrganDetailModel queryProjectRegion(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("organId") String organId,@Param("innIds")List<Map<String, String>> innIds);
    
    //获取项目的季度和年度--满意度
    Map<String,Object> queryProjectScore(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("organId") String organId,@Param("commId") String commId);
    
    //获取季度满意度所需要的参数
    Map<String,Object>  queryCountryQuarterScore(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("Identification")String Identification,@Param("organId") String organId);
    
    
    //季度区域查询 公用
    List<MicroSatisfyOrganDetailModel> queryPublic(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("Identification") String Identification,@Param("organId")String organId);
    
    //季度项目查询 公用
    List<MicroSatisfyOrganDetailModel> queryPublicProject(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("Identification") String Identification,@Param("organId")String organId,@Param("innIds")List<Map<String, String>> innIds);
    
    //获取问卷明细
    List<MicroSatisfyOrganDetailModel> queryQuestionnaire(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("organId") String organId,@Param("commId")String commId,PageRowBounds pageRowBounds);
    
    //覆盖区域排名重复数据--重新生成
    //void deleteMicroOrganRank(@Param("timeStr") String timeStr);
    
    //覆盖项目排名重复数据--重新生成
    //void deleteMicroCommRank(@Param("timeStr") String timeStr);
    //覆盖项目满意度汇总表--重新生成
    //void deleteMicroSatisfyRegionDetail(@Param("timeStr") String timeStr);
    
    List<MicroSatisfyOrganDetailModel> getQueryRegionalRanking(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("Identification")String Identification,@Param("organId")String organId,@Param("innIds")List<Map<String, String>> innIds);
    
    List<MicroSatisfyOrganDetailModel> getQueryRegionalRankingTwo(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("Identification")String Identification,@Param("organId")String organId,@Param("innIds")List<Map<String, String>> innIds);
    
    MicroSatisfyOrganDetailModel getProjectSatisfaction(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("Identification")String Identification,@Param("organId") String organId,@Param("innIds")List<Map<String, String>> innIds);
    
    MicroSatisfyOrganDetailModel getProjectSatisfactionParameter(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("commId") String commId,PageRowBounds pageRowBounds);
    
    Map<String,Object> getHousekeeperSatisfaction(@Param("beginDate")String beginDate,@Param("commId") String commId);

    List<String> getGetNumber(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("Identification")String Identification,PageRowBounds pageRowBounds);
    
    List<String> getGetNumberComm(@Param("beginDate")String beginDate,@Param("endDate")String endDate,PageRowBounds pageRowBounds);

    List<ManagerData> sumByDate(Map<String,String> map);
    
    List<Map<String,String>> getManagerSatisfy(@Param("timeStr")String timeStr,@Param("organId") String organId,PageRowBounds pageRowBounds);
    
    List<ManagerData> sumYeryByDate(Map<String,String> map);
    
    List<Map<String,String>> getEffectiveProject(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("organId") String organId,@Param("commId") String commId);
    
    List<MicroSatisfyOrganDetailModel> getMicroOrganRank(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("Identification")String Identification,@Param("innIds")List<Map<String, String>> innIds);
   
    MicroSatisfyOrganDetailModel querySatisfyDetailByCommId(@Param("beginDate")String beginDate, @Param("endDate")String endDate,
            @Param("organId")String organId,@Param("commId")String commId);
    
    List<Map<String, Object>> selectVoiceRegion(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("organId") String organId,@Param("innIds")List<Map<String, String>> innIds);
    
    List<MicroSatisfyOrginModel>  querySatisfyQuestionnaire(@Param("identifierId")String identifierId);
    
    int deleteSatisfyQuestionnaire(@Param("identifierId")String identifierId,@Param("identifying")String identifying);
    
    List<Map<String,String>> querySatisfyQuestionnaireByType(@Param("identifierId")String identifierId);

    int updateRegionalObjectives(MicroSatisfyPointModel microSatisfyPointModel);



    int updateCommObjectives(MicroSatisfyCommModel microSatisfyPointModel);



    int addCommObjectives(MicroSatisfyCommModel microSatisfyPointModel);


    void updateIsAssessmentComm(@Param("list") List<Map<String,Object>> list,@Param("userCode") String userCode);
    
    
    List<Map<String,String>> getOrganEffectiveProject(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("organId") String organId,@Param("commId") String commId);
    List<Map<String,String>> getOrganIfLocking(@Param("beginDate")String beginDate,@Param("endDate")String endDate,@Param("organId") String organId,@Param("commId") String commId);
    
}
