# coding=utf-8 import csv import datetime from base import init_env init_env(True) from apps.web.user.models import ConsumeRecord from apps.web.device.models import Group records = ConsumeRecord.objects.filter( ownerId="5b5e96538732d617d228588b", dateTimeAdded__gte=datetime.datetime(2020, 9, 1), isNormal=True, groupId="5c1f07118732d651a00413ee" ) # groupElecDict = dict() # # # 统计消费数据 # for record in records: # serviceInfo = record.servicedInfo or dict() # # elec = float(serviceInfo.get("elec", 0)) # duration = float(serviceInfo.get("duration", 0)) # groupId = record.groupId # refundMoney = float(serviceInfo.get("refundMoney", 0)) # coins = float(record.coin) # # if groupId not in groupElecDict.keys(): # # groupName = Group.get_group(groupId).get("groupName") # # groupElecDict[groupId] = { # "elec": 0, # "duration": 0, # "money": 0, # "groupName": groupName # } # # groupElecDict[groupId]["elec"] += elec # groupElecDict[groupId]["duration"] += duration # groupElecDict[groupId]["money"] += coins - refundMoney # # # with open("zhuxing_elec.csv", "w") as f: # csvWrite = csv.DictWriter(f, ["groupName", "money", "duration", "elec"]) # csvWrite.writeheader() # data = sorted(groupElecDict.values(), key=lambda x:x["elec"]) # csvWrite.writerows(data) oneGroupList = list() for record in records: serviceInfo = record.servicedInfo or dict() elec = float(serviceInfo.get("elec", 0)) duration = float(serviceInfo.get("duration", 0)) groupId = record.groupId refundMoney = float(serviceInfo.get("refundMoney", 0)) coins = float(record.coin) oneGroupList.append( { "elec": elec, "duration": duration, "money": coins - refundMoney, "startTime": record.dateTimeAdded.strftime("%Y-%m-%d %H:%M:%S"), "finishedTime": record.finishedTime.strftime("%Y-%m-%d %H:%M:%S") if record.finishedTime else "" } ) with open("zhuxing_elec.csv", "w") as f: csvWrite = csv.DictWriter(f, ["money", "duration", "elec", "startTime", "finishedTime"]) csvWrite.writeheader() csvWrite.writerows(oneGroupList)