output_iccid_from_sim_charge.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. import datetime
  4. import os
  5. import sys
  6. from collections import OrderedDict
  7. PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..')
  8. sys.path.insert(0, PROJECT_ROOT)
  9. from script.base import init_env
  10. os.environ.update({"DJANGO_SETTINGS_MODULE": "configs.production"})
  11. init_env(interactive = False)
  12. from apps.web.dealer.models import DealerRechargeRecord, Dealer
  13. from apps.web.device.models import Device, SIMCard
  14. from apps.web.core.utils import generate_excel_report
  15. start_time = datetime.datetime.strptime(sys.argv[1], "%Y-%m-%d %H:%M:%S")
  16. end_time = datetime.datetime.strptime(sys.argv[2], "%Y-%m-%d %H:%M:%S")
  17. if len(sys.argv) >= 4:
  18. save_path = sys.argv[3]
  19. else:
  20. save_path = None
  21. rechare_map = {}
  22. objs = DealerRechargeRecord.objects.filter(status = 'Paid', finishedTime__gte = start_time, finishedTime__lt = end_time)
  23. for obj in objs:
  24. items = obj.items
  25. for item in items:
  26. rechare_map[item['devNo']] = obj
  27. records = []
  28. devices = [obj for obj in Device.objects(devNo__in = rechare_map.keys())]
  29. for device in devices:
  30. dataList = [
  31. (u'逻辑码', device.logicalCode),
  32. (u'设备编号', device.devNo),
  33. (u'经销商ID', device.ownerId),
  34. (u'ICCID', device.iccid),
  35. (u'IMSI', device.imsi)
  36. ]
  37. if device.ownerId == '':
  38. continue
  39. dealer = Dealer.objects(id = device.ownerId).first()
  40. dataList.append((u'电话', dealer.username))
  41. dataList.append((u'经销商', dealer.nickname))
  42. dataList.append((u'充值时间', rechare_map[device.devNo].finishedTime))
  43. sim = SIMCard.objects(iccid__in = [device.iccid, device.iccid.upper()]).first()
  44. if not sim:
  45. print 'not find sim card = {}'.format(device.iccid)
  46. dataList.append(('supplier', ''))
  47. dataList.append(('activeTime', ''))
  48. dataList.append(('expireTime', ''))
  49. else:
  50. dataList.append(('supplier', sim.supplier))
  51. dataList.append(('activeTime', sim.activeTime))
  52. dataList.append(('expireTime', sim.expireTime))
  53. records.append(OrderedDict(dataList))
  54. if save_path:
  55. generate_excel_report('{}/{}_{}_sim_charge.xlsx'.format(
  56. save_path, start_time.strftime('%Y%m%d%H%M%S'), end_time.strftime('%Y%m%d%H%M%S')),
  57. records, localSave = True)
  58. else:
  59. generate_excel_report('{}_{}_sim_charge.xlsx'.format(
  60. start_time.strftime('%Y%m%d%H%M%S'), end_time.strftime('%Y%m%d%H%M%S')), records, localSave = True)