123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- # coding=utf-8
- import csv
- import datetime
- from collections import defaultdict
- from base import init_env
- init_env(True)
- from apps.web.device.models import Device
- from apps.web.dealer.models import Dealer
- from apps.web.agent.models import Agent
- from apps.web.user.models import ConsumeRecord
- AGENT_USER_NAME = [
- "13369511300",
- "13720519878",
- "18687807868",
- "15888195046",
- "18602940968",
- "17175377730",
- "15349681127"
- ]
- NEED_CONSUME_RECORD = True
- agents = Agent.objects.filter(username__in=AGENT_USER_NAME).all()
- agentIds = [str(item.id) for item in agents]
- dealers = Dealer.objects.filter(agentId__in=agentIds).all()
- dealerIds = [str(item.id) for item in dealers]
- devices = Device.objects.filter(ownerId__in=dealerIds)
- dealerDeviceNumDict = defaultdict(int)
- devDict = defaultdict(list)
- agentDict = defaultdict(int)
- consumeAgentDict = defaultdict(int)
- for dev in devices:
- if dev.is_expire:
- continue
- # 判断三个月内有没有订单
- devNo = dev.devNo
- if not ConsumeRecord.objects.filter(devNo=devNo, dateTimeAdded__gte=(datetime.datetime.now() - datetime.timedelta(days=90))).count():
- # hasConsume = True
- continue
- # else:
- # hasConsume = False
- dealerDeviceNumDict[dev.ownerId] += 1
- dealerId = dev.ownerId
- dealer = Dealer.get_dealer(dealerId)
- agent = Agent.objects.get(id=dealer.get("agentId"))
- agentUserName = agent.username
- devData = {
- "devNo": dev.devNo,
- "logicalCode": dev.logicalCode,
- "imsi": dev.imsi,
- "iccid": dev.iccid,
- "dealerName": "{}-{}".format(dealer.get("nickname", ""), dealer.get("username", "")),
- "agentName": "{}-{}".format(agent.nickname, agent.username),
- }
- devDict["{}-{}".format(agent.nickname, agent.username)].append(devData)
- with open("dealer_device_num.csv", "w") as f:
- for k, v in devDict.items():
- csvWriter1 = csv.DictWriter(f, [k])
- csvWriter1.writeheader()
- csvWriter1.writerow({k: len(v)})
- csvWriter2 = csv.DictWriter(f, ["logicalCode", "devNo", "imsi", "iccid", "dealerName", "agentName"])
- csvWriter2.writeheader()
- csvWriter2.writerows(v)
- # with open("dealer_device_num.csv", "w") as f:
- # csvWriter = csv.DictWriter(f, ["devNo", "dealerName", "dealerId", "agentId", "agentName", "hasConsume"])
- # csvWriter.writeheader()
- # csvWriter.writerows(devList)
- #
- # csvWriter2 = csv.DictWriter(f, agentDict.keys())
- # csvWriter2.writeheader()
- # csvWriter2.writerow(agentDict)
- #
- # csvWriter3 = csv.DictWriter(f, consumeAgentDict.keys())
- # csvWriter3.writeheader()
- # csvWriter3.writerow(consumeAgentDict)
- # writeDataList = list()
- # for dealerId, devNum in dealerDeviceNumDict.items():
- # dealer = Dealer.get_dealer(dealerId)
- # agent = Agent.objects.get(id=dealer.get("agentId"))
- #
- # agentUserName = agent.username
- #
- # writeAgentDict[agentUserName] += devNum
- #
- # tempData = {
- # "dealerId": dealerId,
- # "dealerName": "{}-{}".format(dealer.get("nickname", ""), dealer.get("username", "")),
- # "devCounts": devNum,
- # "agentId": dealer.get("agentId"),
- # "agentName": "{}-{}".format(agent.nickname, agent.username)
- # }
- # writeDataList.append(tempData)
- #
- # with open("dealer_device_num.csv", "w") as f:
- # csvWriter = csv.DictWriter(f, ["dealerId", "dealerName", "devCounts", "agentId", "agentName"])
- # csvWriter.writeheader()
- # csvWriter.writerows(writeDataList)
- #
- # with open("dealer_device_num_agent.csv", "w") as f:
- # csvWriter = csv.DictWriter(f, writeAgentDict.keys())
- # csvWriter.writeheader()
- # csvWriter.writerow(writeAgentDict)
|