shankailaidianAnalyze.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. import os, sys,time,datetime
  4. import urllib, urllib2, sys
  5. import requests
  6. from mongoengine import register_connection, PointField, DynamicDocument, StringField
  7. import simplejson as json
  8. import ssl
  9. import xlrd
  10. from xlrd import xldate_as_tuple
  11. from collections import OrderedDict
  12. PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..')
  13. sys.path.insert(0, PROJECT_ROOT)
  14. os.environ.setdefault("DJANGO_SETTINGS_MODULE", "configs.testing")
  15. from script.base import init_env
  16. init_env(interactive = False)
  17. from apps.web.core.db import Searchable
  18. from apps.web.core.utils import generate_excel_report
  19. register_connection(alias = 'spider',
  20. name = 'spider',
  21. host = '211.159.224.10',
  22. port = 27119,
  23. username = 'service',
  24. password = 'oOzjoQcO5DyyiN97AY0NpzJ6vztjNpx5',
  25. authentication_source = 'admin')
  26. class shankailaidianDevice(Searchable):
  27. meta = {
  28. 'collection': 'shankailaidian_device',
  29. 'db_alias': 'spider',
  30. 'unique_together': {'vStationNo'}
  31. }
  32. records = []
  33. owerDict = {}
  34. ii = 0
  35. for rcd in shankailaidianDevice.get_collection().find({}):
  36. ii += 1
  37. if ii % 100 == 0:
  38. print ii
  39. addYear = rcd['tAddTime'].split('-')[0]
  40. if rcd['vHelpMobile'] in owerDict:
  41. owerDict[rcd['vHelpMobile']]['count'] += 1
  42. owerDict[rcd['vHelpMobile']]['income'] += float(rcd['dTotalIncome'])
  43. if owerDict[rcd['vHelpMobile']].has_key(addYear):
  44. owerDict[rcd['vHelpMobile']][addYear] += 1
  45. else:
  46. owerDict[rcd['vHelpMobile']][addYear] = 1
  47. else:
  48. owerDict[rcd['vHelpMobile']] = {'count':1,'income':float(rcd['dTotalIncome']),addYear:1}
  49. for mobile,info in owerDict.items():
  50. ii += 1
  51. if ii % 100 == 0:
  52. print ii
  53. dataList = [
  54. (u'电话', mobile),
  55. (u'数目', info['count']),
  56. (u'总收入', info['income']),
  57. (u'分配', info['income']*0.2),
  58. (u'单台设备均分', info['income']*0.2/info['count']),
  59. (u'2022', info.get('2022',0)),
  60. (u'2021', info.get('2021',0)),
  61. (u'2020', info.get('2020',0)),
  62. (u'2019', info.get('2019',0)),
  63. (u'2018', info.get('2018',0)),
  64. ]
  65. records.append(OrderedDict(dataList))
  66. generate_excel_report('F:/shankailaidian_tongji3.xlsx', records,True)
  67. print('OK')