Commit 4ced67f9 by Aeolus

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

parent 93523e8d
...@@ -3,9 +3,12 @@ import datetime ...@@ -3,9 +3,12 @@ import datetime
from flask import Blueprint, jsonify, request, g 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 Libs.Helper import Helper
from Model.Base import db
from Model.Customer.CustomerModel import Customer from Model.Customer.CustomerModel import Customer
from Model.Machine.MachineModel import Machine
from Model.Production.ProductionModel import Production
from Service.ReportService import ReportService from Service.ReportService import ReportService
route_report = Blueprint('report', __name__) route_report = Blueprint('report', __name__)
...@@ -51,18 +54,18 @@ def user_chart(): ...@@ -51,18 +54,18 @@ def user_chart():
@route_report.route('/gender') @route_report.route('/gender')
def user_gender(): def user_gender():
male = 0 sql = """select gender,count(1) as number from customers group by gender"""
female = 0 gender_info = db.session.execute(sql).fetchall()
unknown = 0 print(gender_info)
gender_info = Customer.query.with_entities(Customer.gender).all() result_data = {'male': 0, 'female': 0, 'unknown': 0}
for info in gender_info: for i in gender_info:
if info.gender == 1: if i.gender == 0:
male += 1 result_data["unknown"] = i.number
elif info.gender == 2: elif i.gender == 1:
female += 1 result_data["male"] = i.number
else: elif i.gender == 2:
unknown += 1 result_data["female"] = i.number
return jsonify({'code': 200, 'msg': 'success', 'data': {'male': male, 'female': female, 'unknown': unknown}}) return jsonify({'code': 200, 'msg': 'success', 'data': result_data})
@route_report.route('/rent_number', methods=['GET', 'POST']) @route_report.route('/rent_number', methods=['GET', 'POST'])
...@@ -120,3 +123,47 @@ def rent_over_record(): ...@@ -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) total, total_rent, data = ReportService.get_spot_rent_record(spot_id, int(data_type), date, page, limit)
return jsonify( return jsonify(
{'error_code': 200, 'error_message': 'Success', 'total': total, 'total_rent': total_rent, 'data': data}) {'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