123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- # coding=utf-8
- import csv
- import datetime
- import os
- import pandas as pd
- from base import init_env
- init_env(True)
- from apps.web.agent.models import Agent
- from apps.web.dealer.models import Dealer
- from apps.web.device.models import Device, SIMCard, Group
- logicalCodes = """
- 352081
- 302219
- 100555
- 302232
- 108410
- 100987
- 352192
- 372184
- 112159
- 352161
- 108411
- 352170
- 362536
- 352080
- 352193
- 352163
- 302217
- 112129
- 362486
- 362487
- 302203
- 302275
- 352166
- 302202
- """
- logicalCodeList = logicalCodes.split()
- dealerSet = set()
- def write_to_csv(agent, client, dataList, path):
- dataList.sort(key=lambda x: x.get(u"流量卡过期时间"), reverse=True)
- if not path:
- path = "/var/www/UserServer/script/2020_12_31_sim"
- headers = [
- u"设备编号",
- u"当前二维码号",
- u"流量卡",
- u"流量卡状态",
- u"流量卡过期时间",
- u"流量卡供应商",
- u"设备所属组",
- u"软件版本",
- u"核心版本",
- u"驱动编码",
- u"模块版本",
- u"是否离线",
- u"离线时间",
- u"统计时间",
- ]
- fileName = os.path.join(path, u"{}_{}_{}.csv".format(client.nickname, client.username, agent.nickname))
- with open(fileName, "w") as f:
- writer = csv.DictWriter(f, fieldnames=headers)
- writer.writeheader()
- writer.writerows(dataList)
- excelFileName = fileName.replace(".csv", ".xlsx")
- csvFile = pd.read_csv(fileName, encoding='utf-8')
- csvFile.to_excel(excelFileName, sheet_name=u"模块统计")
- def get_device(ownerId):
- return Device.objects.filter(logicalCode__in=logicalCodeList)
- def get_box_type(ver):
- verLis = ver.split(".")
- if verLis[0] in ["v50", "v60", "v7"]:
- return "4G"
- else:
- return "2G"
- def getDataList(ownerId):
- # if not ownerId:
- # return
- dataList = list()
- t = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
- # for dev in get_device(ownerId):
- for dev in get_device(ownerId):
- try:
- simCard = SIMCard.objects.get(iccid=dev.iccid)
- except Exception:
- print "dev <{}> iccid not found!".format(dev.devNo)
- simCard = SIMCard()
- group = Group.get_group(dev.groupId) or dict()
- softVer = dev.softVer
- dev = Device.get_dev(dev.devNo)
- online = dev.online if dev else ""
- offTime = datetime.datetime.fromtimestamp(int(str(dev.offTime)[0:10])).strftime("%Y-%m-%d") if dev.offTime else ""
- data = {
- u"设备编号": "IMEI_{}".format(dev.devNo),
- u"当前二维码号": dev.logicalCode,
- u"流量卡": dev.iccid,
- u"流量卡状态": dev.simStatus,
- u"流量卡过期时间": datetime.datetime.strftime(simCard.expireTime, "%Y-%m-%d %H:%M:%S") if simCard.expireTime else "not expired time",
- u"流量卡供应商": simCard.supplier,
- u"设备所属组": group.get("groupName", u"未知地址"),
- u"软件版本": softVer,
- u"核心版本": dev.coreVer,
- u"驱动编码": dev.devType.get("code"),
- u"模块版本": get_box_type(softVer),
- u"是否离线": str(online),
- u"离线时间": str(offTime),
- u"统计时间": t
- }
- dataList.append(data)
- print u"设备统计完成"
- return dataList
- def main():
- # for dev in Device.objects.filter(logicalCode__in=logicalCodeList):
- # dealer = Dealer.objects.get(id=dev.ownerId)
- # agent = Agent.objects.get(id=dealer.agentId)
- # dealerSet.add("{}-{}-{}-{}".format(agent.nickname, dealer.nickname, dealer.username, str(dealer.id)))
- #
- # for dealerInfo in dealerSet:
- # dealerId = dealerInfo.split('-')[-1]
- # dealer = Dealer.objects.get(id=dealerId)
- # agent = Agent.objects.get(id=dealer.agentId)
- device = Device.objects.get(logicalCode=logicalCodeList[0])
- dealer = Dealer.objects.get(id=device.ownerId)
- dealerId = str(dealer.id)
- agent = Agent.objects.get(id=dealer.agentId)
- dataList = getDataList(dealerId)
- print "dataList"
- print dataList
- write_to_csv(agent, dealer, dataList, "")
- if __name__ == '__main__':
- main()
|