Commit 4ced67f9 by Aeolus

统计机柜各自租借量,用户性别分析接口优化

parent 93523e8d
......@@ -3,9 +3,12 @@ import datetime
from flask import Blueprint, jsonify, request, g
from Libs.ErrorTips import BASE_RESPONSE
from Libs.ErrorTips import BASE_RESPONSE, OPERATE_LEVEL_ERROR
from Libs.Helper import Helper
from Model.Base import db
from Model.Customer.CustomerModel import Customer
from Model.Machine.MachineModel import Machine
from Model.Production.ProductionModel import Production
from Service.ReportService import ReportService
route_report = Blueprint('report', __name__)
......@@ -51,18 +54,18 @@ def user_chart():
@route_report.route('/gender')
def user_gender():
male = 0
female = 0
unknown = 0
gender_info = Customer.query.with_entities(Customer.gender).all()
for info in gender_info:
if info.gender == 1:
male += 1
elif info.gender == 2:
female += 1
else:
unknown += 1
return jsonify({'code': 200, 'msg': 'success', 'data': {'male': male, 'female': female, 'unknown': unknown}})
sql = """select gender,count(1) as number from customers group by gender"""
gender_info = db.session.execute(sql).fetchall()
print(gender_info)
result_data = {'male': 0, 'female': 0, 'unknown': 0}
for i in gender_info:
if i.gender == 0:
result_data["unknown"] = i.number
elif i.gender == 1:
result_data["male"] = i.number
elif i.gender == 2:
result_data["female"] = i.number
return jsonify({'code': 200, 'msg': 'success', 'data': result_data})
@route_report.route('/rent_number', methods=['GET', 'POST'])
......@@ -120,3 +123,47 @@ def rent_over_record():
total, total_rent, data = ReportService.get_spot_rent_record(spot_id, int(data_type), date, page, limit)
return jsonify(
{'error_code': 200, 'error_message': 'Success', 'total': total, 'total_rent': total_rent, 'data': data})
@route_report.route('/machine_rent_number', methods=['GET', 'POST'])
def get_machine_rent_number():
print(g.user)
if g.user.status != 1 and g.user.level != 1:
return jsonify(OPERATE_LEVEL_ERROR)
json_data = request.get_json()
spot_id = int(json_data['spot_id']) if 'spot_id' in json_data else 0
machine_info = Machine.query.filter(Machine.spot_id == spot_id).all()
machines = {}
for info in machine_info:
machines[str(info.id)] = [str(info.mac_no)[-3:], 0]
move_spot_ids = {16: 50, 42: 51, 48: 49}
sql_spot_id = spot_id
while True:
sql = """
SELECT
rent_machine_id as id,count(1) as number
FROM
production
WHERE
spot_id = '{}'
and DATE_FORMAT(created_at, '%Y-%m-%d')='{}'
and total>0
group by rent_machine_id
""".format(sql_spot_id, datetime.datetime.now().strftime("%Y-%m-%d"))
result = db.session.execute(sql).fetchall()
for i in result:
if machines.get(str(i.id), None):
machines[str(i.id)][1] += i.number
if result:
if not move_spot_ids.get(sql_spot_id, None):
break
else:
sql_spot_id = move_spot_ids[sql_spot_id]
data = list(machines.values())
print(data)
return jsonify(
{'error_code': 200, 'error_message': 'Success', 'data': data})
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment