# -*- coding: utf-8 -*- # !/usr/bin/env python import datetime import os import sys PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..') sys.path.insert(0, PROJECT_ROOT) from script.base import get_logger logger = get_logger(__name__) os.environ.update({"DJANGO_SETTINGS_MODULE": "configs.production"}) import django django.setup() def cal_dev_and_group(): from apps.web.device.models import Device, Group import csv # 已经有经销商的设备 devQuery = Device.objects.filter(ownerId__exists=1) total = devQuery.count() offset = 0 result = list() while offset < total: for _dev in Device.objects.filter(ownerId__exists=1).only("id", "ownerId", "groupId")[ offset: offset + 1000]: # type: Device if not _dev.groupId: continue dOwnerId = _dev.ownerId try: group = Group.objects.get(id=_dev.groupId) # type: Group groupId, gOwnerId = group.id, group.ownerId except Exception as e: print(_dev.id, e) groupId, gOwnerId = "", "" if dOwnerId == gOwnerId: continue row = { "devId": str(_dev.id), "dOwnerId": str(dOwnerId), "gId": str(groupId), "gOwnerId": str(gOwnerId) } result.append(row) offset += 1000 with open("error_dev_group.csv", "w") as f: w = csv.DictWriter(f, fieldnames=["devId", "dOwnerId", "gId", "gOwnerId"]) w.writeheader() w.writerows(result) def check_dealer_income_proxy(): from apilib.utils_datetime import get_zero_time, get_tomorrow_zero_time from apps.web.dealer.proxy import DealerIncomeProxy from apps.web.dealer.models import Dealer import csv from apps.web.device.models import Group yesterday = datetime.datetime.now() - datetime.timedelta(days=1) start_time = get_zero_time(yesterday) end_time = get_tomorrow_zero_time(yesterday) print start_time print end_time query = DealerIncomeProxy.objects.filter(dateTimeAdded__gte=start_time,dateTimeAdded__lt=end_time) total = query.count() offset = 0 result = list() while offset < total: for item in query[offset: offset + 1000]: # type: DealerIncomeProxy partitions = item.partition ownerId = None parterids = [] for partition in partitions: if partition['role'] == 'owner': ownerId = partition['id'] elif partition['role'] == 'partner': parterids.append(partition['id']) group = Group.objects(id=str(item.groupId)).first() if not group: print '{} has no Group.'.format(str(item.groupId)) row = { "incomeId": str(item.id), "gId": '', "gOwnerId": '', 'ownerId': ownerId, "error": "3" } result.append(row) continue if group.ownerId != ownerId: row = { "incomeId": str(item.id), "gId": str(item.groupId), "gOwnerId": str(ownerId), 'ownerId': ownerId, "error": "1" } print row result.append(row) else: dealers = Dealer.objects(id__in=([ownerId] + parterids)) agentId = None for dealer in dealers: if not agentId: agentId = dealer.agentId else: if agentId != dealer.agentId: row = { "incomeId": str(item.id), "gId": str(item.groupId), "gOwnerId": str(ownerId), 'ownerId': ownerId, "error": "2" } print row result.append(row) print 'finished 1000 rows.' offset += 1000 with open("error_dev_group.csv", "w") as f: w = csv.DictWriter(f, fieldnames=["incomeId", "gId", "gOwnerId", "ownerId", "error"]) w.writeheader() w.writerows(result) check_dealer_income_proxy()