package cn.com.countrygarden.bi.main.dao.twerp.hm;

import cn.com.countrygarden.bi.main.core.Mapper;
import cn.com.countrygarden.bi.main.dto.ManagerMapDTO;
import cn.com.countrygarden.bi.main.dto.ManagerMapOrganTreeDTO;
import cn.com.countrygarden.bi.main.model.financial.dto.Project;
import cn.com.countrygarden.bi.main.model.twerp.ErpCommunity;
import cn.com.countrygarden.bi.main.model.twerp.ErpNcData;
import cn.com.countrygarden.bi.main.model.twerp.hm.TbHsprCommunity;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface TbHsprCommunityMapper extends Mapper<TbHsprCommunity> {
    TbHsprCommunity countThisMonthByUserCode(String userCode);

    TbHsprCommunity countAllByUserCode(String userCode);

    List<ErpCommunity> findAllBaseComm();

    List<ErpCommunity> findAllComm();
    List<ErpCommunity> findAllCommByUserCode(@Param("organCode") String organCode);
    List<ErpCommunity> findAllCommByUserCode1(@Param("organCode") String organCode);

    TbHsprCommunity findByCommID(String commId);

    List<ErpCommunity> findBaseCommByUserCode(@Param("userCode") String userCode, @Param("organCode") String organCode);

    List<ErpCommunity> findBaseCommByCode(@Param("commCodes") List<String> commCodes);

    List<ErpCommunity> findOrganBaseByUserCode(@Param("userCode") String userCode, @Param("organCode") String organCode);

    List<ErpCommunity> findCommBaseByUserCode(@Param("userCode") String userCode, @Param("organCode") String organCode);

    List<ErpCommunity> findCommBaseByOrgCodes(@Param("organCodes") List<String> organCodes);

    List<ErpCommunity> findBaseCommByName(@Param("commName") String commName);

    TbHsprCommunity findHSPRCommByName(@Param("commName") String commName);

    List<ErpCommunity> findBaseCommByCommId(@Param("commID") String commId);
    




    /**
     * 本月收费面积区域排行
     *
     * @param lastMonth 如果lastMonth不为空则查询上个月的收费面积区域排行，因为可能月初几天有些区域收费面积为空，所以才出此策略
     * @return
     */
    List<TbHsprCommunity> chargeAreaRanking(@Param("lastMonth") String lastMonth);

    /**
     * 本年每月收费面积趋势
     *
     * @return
     */
    List<TbHsprCommunity> monthOfYearArea();

    TbHsprCommunity countMarketingExpansionCharge();

    /**
     * 查询所有的纯案场或者案场常规混合的项目
     *
     * @param organCode
     * @return
     */
    List<TbHsprCommunity> findCaseFieldCommByOrganCode(@Param("organCode") String organCode);

    /**
     * 查询所有该用户关联的纯案场或者案场常规混合的区域
     *
     * @param userCode
     * @return
     */
    List<ErpCommunity> findOrgansByUserCode(@Param("userCode") String userCode);

    List<ErpCommunity> findCommsByUserCodeAndOrganCode(@Param("userCode") String userCode, @Param("organCode") String organCode);

    /**
     * 通过用户ID查询所有的纯案场或者常规混合的项目
     *
     * @param userCode
     * @return
     */
    List<ErpCommunity> findCommsByUserCode(@Param("userCode") String userCode);

    /**
     * 查询所有区域
     *
     * @return
     */
    List<ManagerMapDTO> findAllBaseOrgan(@Param("organName") String organName);


    /**
     * 查询指定区域的项目
     *
     * @param organCode
     * @return
     */
    List<String> selectCommunityNamesByOrganCode(@Param("organCode") String organCode);

    /**
     * 查找区域数据
     *
     * @return
     */
    List<ManagerMapOrganTreeDTO> selectAllBaseOrganTree();

    List<ManagerMapOrganTreeDTO> selectCommunityTreeByOrganCode(@Param("organCode") String organCode);

    /**
     * @Description: 获取项目账套编码信息
     * @Param: [userCode]
     * @return: java.util.List<cn.com.countrygarden.bi.main.model.twerp.ErpNcData>
     * @Author: SignV
     * @Date: 2018/8/7
     */
    List<ErpNcData> selectProjectByUserCode(@Param("userCode") String userCode);

    /**
     * @Description: 获取区域账套编码信息
     * @Param: [userCode]
     * @return: java.util.List<cn.com.countrygarden.bi.main.model.twerp.ErpNcData>
     * @Author: SignV
     * @Date: 2018/8/7
     */
    List<ErpNcData> selectRegionByUserCode(@Param("userCode") String userCode);

    /**
     * @Description: 获取账簿编号对应多项目的NCSystemNumber
     * @Param: []
     * @return: java.util.List<java.lang.String>
     * @Author: SignV
     * @Date: 2018/8/9
     */
    List<String> selectCodoOneToMany();
    /**
     * @Description: 通过commId获取项目账套编码信息
     * @Param: [commId]
     * @return: java.util.List<cn.com.countrygarden.bi.main.model.twerp.ErpNcData>
     * @Author: SignV
     * @Date: 2018/8/28
     */
    List<ErpNcData> selectProjectByCommId(@Param("commId") String commId);
    /**
     * @Description: 通过OrganCode获取区域对应账簿编码
     * @Param: [organCode]
     * @return: java.util.List<cn.com.countrygarden.bi.main.model.twerp.ErpNcData>
     * @Author: SignV
     * @Date: 2018/8/23
     */
    List<ErpNcData> selectRegionByOrganCode(@Param("organCode") String organCode);
    /**
     * @Description: 通过commIdList获取项目对应账簿编码
     * @Param: [commIdList]
     * @return: java.util.List<cn.com.countrygarden.bi.main.model.twerp.ErpNcData>
     * @Author: SignV
     * @Date: 2018/8/23
     */
    List<ErpNcData> selectProjectByCommIdList(@Param("commIdList") List<String> commIdList);

    List<ErpCommunity> slectErpCommunityByOrganCode(@Param(value = "organCode") String organCode);
    /**
     * @Description: 通过 commIdList 获取PL按项目横向 Project Bean
     * @Param: [commIdList]
     * @return: java.util.List<cn.com.countrygarden.bi.main.model.financial.dto.Project>
     * @Author: SignV
     * @Date: 2018/8/23
     */
    List<Project> selectProjectBeanByCommIdList(@Param("commIdList") List<String> commIdList);

    List<String> selectAllOrganCode();
    // 大业主使用
    List<ErpCommunity> findBaseCommByCommIdOrArea(@Param("commID") String commId,@Param("area") String area);

    List<ManagerMapOrganTreeDTO> selectCommunityTreeByOrganCode1(@Param("organCode")String organCode);
    /**
    * @Description: 通过COMMID获取组团信息 RegionID RegionName
    * @Param: [commId]
    * @return: java.util.List<cn.com.countrygarden.bi.main.model.twerp.ErpNcData>
    * @Author: SignV
    * @Date: 2018/9/14
    */
    List<ErpNcData> selectGroupsByCommId(String commId);
    List<ErpCommunity> findAllRoleOrganCode(@Param("organCode") String organCode);
	
    List<String> findCommsByUserCodeAndOrganCodefenghuang(@Param("userCode") String userCode,@Param("organCode") String organCode);

    List<String> selectCommNamesByOrganCode(String organCode);

    int commNum();

}