2020_12_31_sim_card.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. # coding=utf-8
  2. import csv
  3. import datetime
  4. import os
  5. os.environ["DJANGO_SETTINGS_MODULE"] = "configs.production"
  6. import pandas as pd
  7. from base import init_env
  8. init_env(False)
  9. from apps.web.device.models import Device, Group
  10. from apps.web.dealer.models import Dealer
  11. from apps.web.agent.models import Agent
  12. from apps.web.device.models import SIMCard
  13. def get_device(ownerId):
  14. return Device.objects.filter(ownerId=ownerId)
  15. def get_box_type(ver):
  16. verLis = ver.split(".")
  17. if verLis[0] in ["v50", "v60", "v7"]:
  18. return "4G"
  19. else:
  20. return "2G"
  21. def write_to_csv(agent, client, dataList, path):
  22. dataList.sort(key=lambda x: x.get(u"流量卡过期时间"), reverse=True)
  23. if not path:
  24. path = "/var/www/UserServer/script/2020_12_31_sim"
  25. headers = [
  26. u"设备编号",
  27. u"当前二维码号",
  28. u"流量卡",
  29. u"流量卡状态",
  30. u"流量卡过期时间",
  31. u"流量卡供应商",
  32. u"设备所属组",
  33. u"软件版本",
  34. u"核心版本",
  35. u"驱动编码",
  36. u"模块版本",
  37. u"是否离线",
  38. u"离线时间",
  39. u"统计时间",
  40. ]
  41. fileName = os.path.join(path, u"{}_{}_{}.csv".format(client.nickname, client.username, agent.nickname))
  42. with open(fileName, "w") as f:
  43. writer = csv.DictWriter(f, fieldnames=headers)
  44. writer.writeheader()
  45. writer.writerows(dataList)
  46. excelFileName = fileName.replace(".csv", ".xlsx")
  47. csvFile = pd.read_csv(fileName, encoding='utf-8')
  48. csvFile.to_excel(excelFileName, sheet_name=u"模块统计")
  49. def main(ownerId):
  50. if not ownerId:
  51. return
  52. dataList = list()
  53. t = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
  54. for dev in get_device(ownerId):
  55. try:
  56. simCard = SIMCard.objects.get(iccid=dev.iccid)
  57. except Exception:
  58. print "dev <{}> iccid not found!".format(dev.devNo)
  59. simCard = SIMCard()
  60. group = Group.get_group(dev.groupId) or dict()
  61. softVer = dev.softVer
  62. dev = Device.get_dev(dev.devNo)
  63. online = dev.online if dev else ""
  64. offTime = datetime.datetime.fromtimestamp(int(str(dev.offTime)[0:10])).strftime("%Y-%m-%d") if dev.offTime else ""
  65. data = {
  66. u"设备编号": "IMEI_{}".format(dev.devNo),
  67. u"当前二维码号": dev.logicalCode,
  68. u"流量卡": dev.iccid,
  69. u"流量卡状态": dev.simStatus,
  70. u"流量卡过期时间": datetime.datetime.strftime(simCard.expireTime, "%Y-%m-%d %H:%M:%S") if simCard.expireTime else "not expired time",
  71. u"流量卡供应商": simCard.supplier,
  72. u"设备所属组": group.get("groupName", u"未知地址"),
  73. u"软件版本": softVer,
  74. u"核心版本": dev.coreVer,
  75. u"驱动编码": dev.devType.get("code"),
  76. u"模块版本": get_box_type(softVer),
  77. u"是否离线": str(online),
  78. u"离线时间": str(offTime),
  79. u"统计时间": t
  80. }
  81. dataList.append(data)
  82. print u"设备统计完成"
  83. return dataList
  84. if __name__ == '__main__':
  85. phone = raw_input("输入经销商账号:")
  86. basePath = raw_input("输入文件夹路径:")
  87. for dealer in Dealer.objects.filter(username=phone):
  88. try:
  89. a = Agent.objects.get(id=dealer.agentId)
  90. dataLis = main(str(dealer.id))
  91. write_to_csv(a, dealer, dataLis, basePath)
  92. except Exception as e:
  93. print e
  94. continue