def get_leaf_dealer_for_bm(region=None): dealertype_bm = DealerType.objects.get(name_en='BMW') if not region: return Dealer.objects.filter(has_child=False, dealertype=dealertype_bm).order_by('listorder', 'id') else: sub_dealer_id_list = utils.get_sub_leaf_dealer_id_list(region) return Dealer.objects.filter(has_child=False, dealertype=dealertype_bm, id__in=sub_dealer_id_list).order_by('listorder', 'id')
def _inner(): all_dealer_id_list = utils.get_sub_leaf_dealer_id_list(region) all_dealer_id_list = [d.id for d in term.dealers.filter(id__in=all_dealer_id_list)] all_bmw_dealer_id_list = [dealer['id'] for dealer in Dealer.objects.filter(dealertype=get_dealertype_BMW(), has_child=False).values('id')] id_set = set(all_dealer_id_list) & set(all_bmw_dealer_id_list) dealer_count = len(id_set) return dealer_count
def get_leaf_dealer_for_bm(term, region=None): dealertype_bm = DealerType.objects.get(name_en='BMW') if not region: return term.dealers.filter(has_child=False, dealertype=dealertype_bm).order_by('listorder', 'id') else: sub_dealer_id_list = utils.get_sub_leaf_dealer_id_list(region) sub_dealer_id_list = [d.id for d in term.dealers.filter(id__in=sub_dealer_id_list)] return Dealer.objects.filter(has_child=False, dealertype=dealertype_bm, id__in=sub_dealer_id_list).order_by('listorder', 'id').exclude(termid='')
def get_leaf_dealer_other_than_bm(term, region=None): dealertype_list = DealerType.objects.exclude(name_en__in=['BMW', 'MINI']) if not region: return Dealer.objects.filter(has_child=False, dealertype__in=dealertype_list).order_by('dealertype__name_en', 'listorder') else: sub_dealer_id_list = utils.get_sub_leaf_dealer_id_list(region) #sub_dealer_id_list = [d.id for d in term.dealers.filter(id__in=sub_dealer_id_list)] return Dealer.objects.filter(has_child=False, dealertype__in=dealertype_list, id__in=sub_dealer_id_list).order_by('dealertype__name_en', 'listorder')
def get_regional_done_survey_count(region, term): '''按区域汇总的完成数查询接口''' sub_dealer_id_list = utils.get_sub_leaf_dealer_id_list(region) all_bmw_dealer_id_list = [dealer['id'] for dealer in Dealer.objects.filter(dealertype=get_dealertype_BMW(), has_child=False).values('id')] sub_dealer_id_set = set(sub_dealer_id_list) & set(all_bmw_dealer_id_list) dealer_id_list = [paper['dealer_id'] for paper in Paper.objects.filter(term=term, status__gt=enums.PAPER_STATUS_INIT, dealer__id__in=sub_dealer_id_set).values('dealer_id')] return len(set(dealer_id_list))
def _inner(): all_dealer_id_list = utils.get_sub_leaf_dealer_id_list(region) all_dealer_id_list = [ d.id for d in term.dealers.filter(id__in=all_dealer_id_list) ] all_bmw_dealer_id_list = [ dealer['id'] for dealer in Dealer.objects.filter( dealertype=get_dealertype_BMW(), has_child=False).values('id') ] id_set = set(all_dealer_id_list) & set(all_bmw_dealer_id_list) dealer_count = len(id_set) return dealer_count
def get_leaf_dealer_other_than_bm(term, region=None): dealertype_list = DealerType.objects.exclude(name_en__in=['BMW', 'MINI']) if not region: return Dealer.objects.filter(has_child=False, dealertype__in=dealertype_list).order_by( 'dealertype__name_en', 'listorder') else: sub_dealer_id_list = utils.get_sub_leaf_dealer_id_list(region) #sub_dealer_id_list = [d.id for d in term.dealers.filter(id__in=sub_dealer_id_list)] return Dealer.objects.filter(has_child=False, dealertype__in=dealertype_list, id__in=sub_dealer_id_list).order_by( 'dealertype__name_en', 'listorder')
def get_dealer_count_by_region(region, refresh=False): cache_key = 'dealer_count_by_region_%s' % region.id if refresh: dealer_count = None else: dealer_count = cache.get(cache_key) if dealer_count is None: all_dealer_id_list = utils.get_sub_leaf_dealer_id_list(region) all_bmw_dealer_id_list = [dealer['id'] for dealer in Dealer.objects.filter(dealertype=get_dealertype_BMW(), has_child=False).values('id')] id_set = set(all_dealer_id_list) & set(all_bmw_dealer_id_list) dealer_count = len(id_set) cache.set(cache_key, dealer_count, 24 * 60 * 60) return dealer_count
def get_leaf_dealer_for_mini(term, region=None): dealertype_bm = DealerType.objects.get(name_en='MINI') if not region: return term.dealers.filter(has_child=False, dealertype=dealertype_bm).order_by( 'listorder', 'id') else: sub_dealer_id_list = utils.get_sub_leaf_dealer_id_list(region) sub_dealer_id_list = [ d.id for d in term.dealers.filter(id__in=sub_dealer_id_list) ] return Dealer.objects.filter(has_child=False, dealertype=dealertype_bm, id__in=sub_dealer_id_list).order_by( 'listorder', 'id')
def get_dealer_reports(dealer_type_tuple, regional, term_id): '''提供某一种或多种类型的经销商访问情况报告的查询接口,返回值为(经销商代码,城市,省份,经销商名称,经销商本期最终得分,报告)类型的queryset @param dealer_type_tuple:经销商类型ID值组成的tuple @param regional:区域对象 @param term_id:期数ID值 ''' try: c, con = DbUtils.cursor() dealer_id_list = utils.get_sub_leaf_dealer_id_list(regional) dealer_id_list = tuple(dealer_id_list) if len(dealer_type_tuple) == 1: dealer_type_tuple = dealer_type_tuple[0] c.execute('SELECT mc_dealer.name, mc_dealer.city_cn, mc_dealer.city_en, mc_dealer.province_cn, mc_dealer.province_en, mc_dealer.name_cn, mc_dealer.name_en, mc_reportdata.total, mc_report.survey_code FROM mc_dealer LEFT JOIN mc_report ON mc_dealer.id = mc_report.dealer_id LEFT JOIN mc_reportdata ON mc_report.id = mc_reportdata.id AND mc_report.term_id= %s WHERE mc_dealer.id in %s AND mc_dealer.dealertype_id = %s' % (term_id, dealer_id_list, dealer_type_tuple)) else: c.execute('SELECT mc_dealer.name, mc_dealer.city_cn, mc_dealer.city_en, mc_dealer.province_cn, mc_dealer.province_en, mc_dealer.name_cn, mc_dealer.name_en, mc_reportdata.total, mc_report.survey_code FROM mc_dealer LEFT JOIN mc_report ON mc_dealer.id = mc_report.dealer_id LEFT JOIN mc_reportdata ON mc_report.id = mc_reportdata.id AND mc_report.term_id= %s WHERE mc_dealer.id in %s AND mc_dealer.dealertype_id in %s' % (term_id, dealer_id_list, dealer_type_tuple)) result = c.fetchall() finally: if c: c.close() if con: con.close() return result