# 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)