yinguo_device_sim.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. # coding=utf-8
  2. import csv
  3. import datetime
  4. import os
  5. import pandas as pd
  6. from base import init_env
  7. init_env(True)
  8. from apps.web.agent.models import Agent
  9. from apps.web.dealer.models import Dealer
  10. from apps.web.device.models import Device, SIMCard, Group
  11. logicalCodes = """
  12. 352081
  13. 302219
  14. 100555
  15. 302232
  16. 108410
  17. 100987
  18. 352192
  19. 372184
  20. 112159
  21. 352161
  22. 108411
  23. 352170
  24. 362536
  25. 352080
  26. 352193
  27. 352163
  28. 302217
  29. 112129
  30. 362486
  31. 362487
  32. 302203
  33. 302275
  34. 352166
  35. 302202
  36. """
  37. logicalCodeList = logicalCodes.split()
  38. dealerSet = set()
  39. def write_to_csv(agent, client, dataList, path):
  40. dataList.sort(key=lambda x: x.get(u"流量卡过期时间"), reverse=True)
  41. if not path:
  42. path = "/var/www/UserServer/script/2020_12_31_sim"
  43. headers = [
  44. u"设备编号",
  45. u"当前二维码号",
  46. u"流量卡",
  47. u"流量卡状态",
  48. u"流量卡过期时间",
  49. u"流量卡供应商",
  50. u"设备所属组",
  51. u"软件版本",
  52. u"核心版本",
  53. u"驱动编码",
  54. u"模块版本",
  55. u"是否离线",
  56. u"离线时间",
  57. u"统计时间",
  58. ]
  59. fileName = os.path.join(path, u"{}_{}_{}.csv".format(client.nickname, client.username, agent.nickname))
  60. with open(fileName, "w") as f:
  61. writer = csv.DictWriter(f, fieldnames=headers)
  62. writer.writeheader()
  63. writer.writerows(dataList)
  64. excelFileName = fileName.replace(".csv", ".xlsx")
  65. csvFile = pd.read_csv(fileName, encoding='utf-8')
  66. csvFile.to_excel(excelFileName, sheet_name=u"模块统计")
  67. def get_device(ownerId):
  68. return Device.objects.filter(logicalCode__in=logicalCodeList)
  69. def get_box_type(ver):
  70. verLis = ver.split(".")
  71. if verLis[0] in ["v50", "v60", "v7"]:
  72. return "4G"
  73. else:
  74. return "2G"
  75. def getDataList(ownerId):
  76. # if not ownerId:
  77. # return
  78. dataList = list()
  79. t = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
  80. # for dev in get_device(ownerId):
  81. for dev in get_device(ownerId):
  82. try:
  83. simCard = SIMCard.objects.get(iccid=dev.iccid)
  84. except Exception:
  85. print "dev <{}> iccid not found!".format(dev.devNo)
  86. simCard = SIMCard()
  87. group = Group.get_group(dev.groupId) or dict()
  88. softVer = dev.softVer
  89. dev = Device.get_dev(dev.devNo)
  90. online = dev.online if dev else ""
  91. offTime = datetime.datetime.fromtimestamp(int(str(dev.offTime)[0:10])).strftime("%Y-%m-%d") if dev.offTime else ""
  92. data = {
  93. u"设备编号": "IMEI_{}".format(dev.devNo),
  94. u"当前二维码号": dev.logicalCode,
  95. u"流量卡": dev.iccid,
  96. u"流量卡状态": dev.simStatus,
  97. u"流量卡过期时间": datetime.datetime.strftime(simCard.expireTime, "%Y-%m-%d %H:%M:%S") if simCard.expireTime else "not expired time",
  98. u"流量卡供应商": simCard.supplier,
  99. u"设备所属组": group.get("groupName", u"未知地址"),
  100. u"软件版本": softVer,
  101. u"核心版本": dev.coreVer,
  102. u"驱动编码": dev.devType.get("code"),
  103. u"模块版本": get_box_type(softVer),
  104. u"是否离线": str(online),
  105. u"离线时间": str(offTime),
  106. u"统计时间": t
  107. }
  108. dataList.append(data)
  109. print u"设备统计完成"
  110. return dataList
  111. def main():
  112. # for dev in Device.objects.filter(logicalCode__in=logicalCodeList):
  113. # dealer = Dealer.objects.get(id=dev.ownerId)
  114. # agent = Agent.objects.get(id=dealer.agentId)
  115. # dealerSet.add("{}-{}-{}-{}".format(agent.nickname, dealer.nickname, dealer.username, str(dealer.id)))
  116. #
  117. # for dealerInfo in dealerSet:
  118. # dealerId = dealerInfo.split('-')[-1]
  119. # dealer = Dealer.objects.get(id=dealerId)
  120. # agent = Agent.objects.get(id=dealer.agentId)
  121. device = Device.objects.get(logicalCode=logicalCodeList[0])
  122. dealer = Dealer.objects.get(id=device.ownerId)
  123. dealerId = str(dealer.id)
  124. agent = Agent.objects.get(id=dealer.agentId)
  125. dataList = getDataList(dealerId)
  126. print "dataList"
  127. print dataList
  128. write_to_csv(agent, dealer, dataList, "")
  129. if __name__ == '__main__':
  130. main()