zhuxin_elec_analysis.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. # coding=utf-8
  2. import csv
  3. import datetime
  4. from base import init_env
  5. init_env(True)
  6. from apps.web.user.models import ConsumeRecord
  7. from apps.web.device.models import Group
  8. records = ConsumeRecord.objects.filter(
  9. ownerId="5b5e96538732d617d228588b",
  10. dateTimeAdded__gte=datetime.datetime(2020, 9, 1),
  11. isNormal=True,
  12. groupId="5c1f07118732d651a00413ee"
  13. )
  14. # groupElecDict = dict()
  15. #
  16. # # 统计消费数据
  17. # for record in records:
  18. # serviceInfo = record.servicedInfo or dict()
  19. #
  20. # elec = float(serviceInfo.get("elec", 0))
  21. # duration = float(serviceInfo.get("duration", 0))
  22. # groupId = record.groupId
  23. # refundMoney = float(serviceInfo.get("refundMoney", 0))
  24. # coins = float(record.coin)
  25. #
  26. # if groupId not in groupElecDict.keys():
  27. #
  28. # groupName = Group.get_group(groupId).get("groupName")
  29. #
  30. # groupElecDict[groupId] = {
  31. # "elec": 0,
  32. # "duration": 0,
  33. # "money": 0,
  34. # "groupName": groupName
  35. # }
  36. #
  37. # groupElecDict[groupId]["elec"] += elec
  38. # groupElecDict[groupId]["duration"] += duration
  39. # groupElecDict[groupId]["money"] += coins - refundMoney
  40. #
  41. #
  42. # with open("zhuxing_elec.csv", "w") as f:
  43. # csvWrite = csv.DictWriter(f, ["groupName", "money", "duration", "elec"])
  44. # csvWrite.writeheader()
  45. # data = sorted(groupElecDict.values(), key=lambda x:x["elec"])
  46. # csvWrite.writerows(data)
  47. oneGroupList = list()
  48. for record in records:
  49. serviceInfo = record.servicedInfo or dict()
  50. elec = float(serviceInfo.get("elec", 0))
  51. duration = float(serviceInfo.get("duration", 0))
  52. groupId = record.groupId
  53. refundMoney = float(serviceInfo.get("refundMoney", 0))
  54. coins = float(record.coin)
  55. oneGroupList.append(
  56. {
  57. "elec": elec,
  58. "duration": duration,
  59. "money": coins - refundMoney,
  60. "startTime": record.dateTimeAdded.strftime("%Y-%m-%d %H:%M:%S"),
  61. "finishedTime": record.finishedTime.strftime("%Y-%m-%d %H:%M:%S") if record.finishedTime else ""
  62. }
  63. )
  64. with open("zhuxing_elec.csv", "w") as f:
  65. csvWrite = csv.DictWriter(f, ["money", "duration", "elec", "startTime", "finishedTime"])
  66. csvWrite.writeheader()
  67. csvWrite.writerows(oneGroupList)