# -*- coding: utf-8 -*- # !/usr/bin/env python import datetime import os import sys from collections import OrderedDict 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 init_env os.environ.update({"DJANGO_SETTINGS_MODULE": "configs.production"}) init_env(interactive = False) from apps.web.dealer.models import DealerRechargeRecord, Dealer from apps.web.device.models import Device, SIMCard from apps.web.core.utils import generate_excel_report start_time = datetime.datetime.strptime(sys.argv[1], "%Y-%m-%d %H:%M:%S") end_time = datetime.datetime.strptime(sys.argv[2], "%Y-%m-%d %H:%M:%S") if len(sys.argv) >= 4: save_path = sys.argv[3] else: save_path = None rechare_map = {} objs = DealerRechargeRecord.objects.filter(status = 'Paid', finishedTime__gte = start_time, finishedTime__lt = end_time) for obj in objs: items = obj.items for item in items: rechare_map[item['devNo']] = obj records = [] devices = [obj for obj in Device.objects(devNo__in = rechare_map.keys())] for device in devices: dataList = [ (u'逻辑码', device.logicalCode), (u'设备编号', device.devNo), (u'经销商ID', device.ownerId), (u'ICCID', device.iccid), (u'IMSI', device.imsi) ] if device.ownerId == '': continue dealer = Dealer.objects(id = device.ownerId).first() dataList.append((u'电话', dealer.username)) dataList.append((u'经销商', dealer.nickname)) dataList.append((u'充值时间', rechare_map[device.devNo].finishedTime)) sim = SIMCard.objects(iccid__in = [device.iccid, device.iccid.upper()]).first() if not sim: print 'not find sim card = {}'.format(device.iccid) dataList.append(('supplier', '')) dataList.append(('activeTime', '')) dataList.append(('expireTime', '')) else: dataList.append(('supplier', sim.supplier)) dataList.append(('activeTime', sim.activeTime)) dataList.append(('expireTime', sim.expireTime)) records.append(OrderedDict(dataList)) if save_path: generate_excel_report('{}/{}_{}_sim_charge.xlsx'.format( save_path, start_time.strftime('%Y%m%d%H%M%S'), end_time.strftime('%Y%m%d%H%M%S')), records, localSave = True) else: generate_excel_report('{}_{}_sim_charge.xlsx'.format( start_time.strftime('%Y%m%d%H%M%S'), end_time.strftime('%Y%m%d%H%M%S')), records, localSave = True)