123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- # -*- 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()
|