dealer_device_num.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. # coding=utf-8
  2. import csv
  3. import datetime
  4. from collections import defaultdict
  5. from base import init_env
  6. init_env(True)
  7. from apps.web.device.models import Device
  8. from apps.web.dealer.models import Dealer
  9. from apps.web.agent.models import Agent
  10. from apps.web.user.models import ConsumeRecord
  11. AGENT_USER_NAME = [
  12. "13369511300",
  13. "13720519878",
  14. "18687807868",
  15. "15888195046",
  16. "18602940968",
  17. "17175377730",
  18. "15349681127"
  19. ]
  20. NEED_CONSUME_RECORD = True
  21. agents = Agent.objects.filter(username__in=AGENT_USER_NAME).all()
  22. agentIds = [str(item.id) for item in agents]
  23. dealers = Dealer.objects.filter(agentId__in=agentIds).all()
  24. dealerIds = [str(item.id) for item in dealers]
  25. devices = Device.objects.filter(ownerId__in=dealerIds)
  26. dealerDeviceNumDict = defaultdict(int)
  27. devDict = defaultdict(list)
  28. agentDict = defaultdict(int)
  29. consumeAgentDict = defaultdict(int)
  30. for dev in devices:
  31. if dev.is_expire:
  32. continue
  33. # 判断三个月内有没有订单
  34. devNo = dev.devNo
  35. if not ConsumeRecord.objects.filter(devNo=devNo, dateTimeAdded__gte=(datetime.datetime.now() - datetime.timedelta(days=90))).count():
  36. # hasConsume = True
  37. continue
  38. # else:
  39. # hasConsume = False
  40. dealerDeviceNumDict[dev.ownerId] += 1
  41. dealerId = dev.ownerId
  42. dealer = Dealer.get_dealer(dealerId)
  43. agent = Agent.objects.get(id=dealer.get("agentId"))
  44. agentUserName = agent.username
  45. devData = {
  46. "devNo": dev.devNo,
  47. "logicalCode": dev.logicalCode,
  48. "imsi": dev.imsi,
  49. "iccid": dev.iccid,
  50. "dealerName": "{}-{}".format(dealer.get("nickname", ""), dealer.get("username", "")),
  51. "agentName": "{}-{}".format(agent.nickname, agent.username),
  52. }
  53. devDict["{}-{}".format(agent.nickname, agent.username)].append(devData)
  54. with open("dealer_device_num.csv", "w") as f:
  55. for k, v in devDict.items():
  56. csvWriter1 = csv.DictWriter(f, [k])
  57. csvWriter1.writeheader()
  58. csvWriter1.writerow({k: len(v)})
  59. csvWriter2 = csv.DictWriter(f, ["logicalCode", "devNo", "imsi", "iccid", "dealerName", "agentName"])
  60. csvWriter2.writeheader()
  61. csvWriter2.writerows(v)
  62. # with open("dealer_device_num.csv", "w") as f:
  63. # csvWriter = csv.DictWriter(f, ["devNo", "dealerName", "dealerId", "agentId", "agentName", "hasConsume"])
  64. # csvWriter.writeheader()
  65. # csvWriter.writerows(devList)
  66. #
  67. # csvWriter2 = csv.DictWriter(f, agentDict.keys())
  68. # csvWriter2.writeheader()
  69. # csvWriter2.writerow(agentDict)
  70. #
  71. # csvWriter3 = csv.DictWriter(f, consumeAgentDict.keys())
  72. # csvWriter3.writeheader()
  73. # csvWriter3.writerow(consumeAgentDict)
  74. # writeDataList = list()
  75. # for dealerId, devNum in dealerDeviceNumDict.items():
  76. # dealer = Dealer.get_dealer(dealerId)
  77. # agent = Agent.objects.get(id=dealer.get("agentId"))
  78. #
  79. # agentUserName = agent.username
  80. #
  81. # writeAgentDict[agentUserName] += devNum
  82. #
  83. # tempData = {
  84. # "dealerId": dealerId,
  85. # "dealerName": "{}-{}".format(dealer.get("nickname", ""), dealer.get("username", "")),
  86. # "devCounts": devNum,
  87. # "agentId": dealer.get("agentId"),
  88. # "agentName": "{}-{}".format(agent.nickname, agent.username)
  89. # }
  90. # writeDataList.append(tempData)
  91. #
  92. # with open("dealer_device_num.csv", "w") as f:
  93. # csvWriter = csv.DictWriter(f, ["dealerId", "dealerName", "devCounts", "agentId", "agentName"])
  94. # csvWriter.writeheader()
  95. # csvWriter.writerows(writeDataList)
  96. #
  97. # with open("dealer_device_num_agent.csv", "w") as f:
  98. # csvWriter = csv.DictWriter(f, writeAgentDict.keys())
  99. # csvWriter.writeheader()
  100. # csvWriter.writerow(writeAgentDict)