基于大数据平台的城市智能交通分析与预警系统设计与实现(源码+定制+开发)融合时空数据挖掘的智能交通大数据分析平台开发(Hadoop + Spark + Hive) 面向智慧城市的交通流量监测与拥堵预

博主介绍:
✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生完成毕业项目和技术提升。技术范围:
我熟悉的技术领域涵盖SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等方面的设计与开发。如果你有任何技术难题,我都乐意与你分享解决方案。主要内容:
我的服务内容包括:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文撰写与辅导、论文降重、长期答辩答疑辅导。我还提供腾讯会议一对一的专业讲解和模拟答辩演练,帮助你全面掌握答辩技巧与代码逻辑。🍅获取源码请在文末联系我🍅
温馨提示:文末有 CSDN 平台官方提供的阿龙联系方式的名片!
温馨提示:文末有 CSDN 平台官方提供的阿龙联系方式的名片!

1. 大数据分析与Hadoop生态:构建智慧交通的数据底座
在智慧交通系统中,大数据分析是核心驱动力,而Hadoop生态提供了从数据采集、存储到批处理的完整技术链条。借助HDFS分布式存储、YARN资源调度和MapReduce计算框架,交通运营数据(如道路摄像头、传感器和信号灯日志)能够高效地汇聚与离线处理;同时,Hive数据仓库在此基础上提供了类SQL查询接口,使得交通规划师和数据工程师能够便捷地对海量历史交通数据进行统计与汇总,为后续的流量分析与模型训练打下坚实基础。
2. Spark Streaming与时空数据挖掘:实时交通流动态感知
为了实现交通状态的实时监控,Spark Streaming以微批(micro-batch)方式对来自路侧检测器、GPS设备和移动终端的高频流式数据进行处理。结合时空数据挖掘技术,可对车辆轨迹、速度分布和路段拥堵点进行在线聚类与模式识别,快速发现交通热点和出行规律,为后端的拥堵预测和预警系统提供高精度的输入。
3. 道路流量监测与拥堵预测:实现智能调度与管控
在道路流量监测环节,传感器与摄像头持续采集单车速度与车头间距等关键指标,通过Spark Streaming或Flink等流计算引擎实时入库至Hive表,并驱动时空模型(如时空自回归模型STAR或基于LSTM的深度学习模型)进行拥堵预测。预测结果不仅可用于动态信号绿波控制,还能对高风险路段进行智能调度与分流,显著提升通行效率。
4. 实时预警与可视化大屏:从数据到决策一体化
当系统检测到潜在的拥堵或事故风险时,实时预警模块会第一时间通过消息队列推送告警信息至交通指挥中心。结合可视化大屏技术(如Grafana、Echarts或D3.js),交通调度人员可以在大屏上直观地看到路网拥堵热力图、预测趋势曲线和关键路段的实时状态图,并依据预警建议迅速采取应急措施,实现“数据—展示—决策”闭环。
5. 智慧交通:以大数据驱动城市交通升级
通过将大数据分析、Hadoop生态、Spark Streaming、Hive数据仓库、时空数据挖掘、道路流量监测、拥堵预测、实时预警与可视化大屏等技术深度融合,智慧交通体系能够从底层数据采集到上层应用决策全流程协同运作。不仅提高了路网通行效率,还降低了交通拥堵、减少了碳排放,为城市可持续发展注入了强大动力。












核心代码:
# coding:utf-8
__author__ = "ila"
import logging, os, json, configparser
import time
from datetime import datetime
from flask import request, jsonify,session
from sqlalchemy.sql import func,and_,or_,case
from sqlalchemy import cast, Integer,Float
from api.models.brush_model import *
from . import main_bp
from utils.codes import *
from utils.jwt_auth import Auth
from configs import configs
from utils.helper import *
import random
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
from email.header import Header
from utils.baidubce_api import BaiDuBce
from api.models.config_model import config
from flask import current_app as app
from utils.spark_func import spark_read_mysql
from utils.hdfs_func import upload_to_hdfs
from utils.mapreduce1 import MRMySQLAvg
# 注册接口
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/register", methods=['POST'])
def pythonpu284ve5_cheliangluojiaodian_register():
if request.method == 'POST':
msg = {'code': normal_code, 'message': 'success', 'data': [{}]}
req_dict = session.get("req_dict")
error = cheliangluojiaodian.createbyreq(cheliangluojiaodian, cheliangluojiaodian, req_dict)
if error!=None:
msg['code'] = crud_error_code
msg['msg'] = "注册用户已存在"
return jsonify(msg)
# 登录接口
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/login", methods=['GET','POST'])
def pythonpu284ve5_cheliangluojiaodian_login():
if request.method == 'GET' or request.method == 'POST':
msg = {"code": normal_code, "msg": "success", "data": {}}
req_dict = session.get("req_dict")
req_model = session.get("req_dict")
try:
del req_model['role']
except:
pass
datas = cheliangluojiaodian.getbyparams(cheliangluojiaodian, cheliangluojiaodian, req_model)
if not datas:
msg['code'] = password_error_code
msg['msg']='密码错误或用户不存在'
return jsonify(msg)
req_dict['id'] = datas[0].get('id')
try:
del req_dict['mima']
except:
pass
return Auth.authenticate(Auth, cheliangluojiaodian, req_dict)
# 登出接口
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/logout", methods=['POST'])
def pythonpu284ve5_cheliangluojiaodian_logout():
if request.method == 'POST':
msg = {
"msg": "退出成功",
"code": 0
}
req_dict = session.get("req_dict")
return jsonify(msg)
# 重置密码接口
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/resetPass", methods=['POST'])
def pythonpu284ve5_cheliangluojiaodian_resetpass():
'''
'''
if request.method == 'POST':
msg = {"code": normal_code, "msg": "success"}
req_dict = session.get("req_dict")
if req_dict.get('mima') != None:
req_dict['mima'] = '123456'
error = cheliangluojiaodian.updatebyparams(cheliangluojiaodian, cheliangluojiaodian, req_dict)
if error != None:
msg['code'] = crud_error_code
msg['msg'] = error
else:
msg['msg'] = '密码已重置为:123456'
return jsonify(msg)
# 获取会话信息接口
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/session", methods=['GET'])
def pythonpu284ve5_cheliangluojiaodian_session():
'''
'''
if request.method == 'GET':
msg = {"code": normal_code, "data": {}}
req_dict={"id":session.get('params').get("id")}
msg['data'] = cheliangluojiaodian.getbyparams(cheliangluojiaodian, cheliangluojiaodian, req_dict)[0]
return jsonify(msg)
# 分类接口(后端)
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/page", methods=['GET'])
def pythonpu284ve5_cheliangluojiaodian_page():
'''
'''
if request.method == 'GET':
msg = {"code": normal_code, "msg": "success", "data":{"currPage":1,"totalPage":1,"total":1,"pageSize":10,"list":[]}}
req_dict = session.get("req_dict")
userinfo = session.get("params")
try:
__hasMessage__=cheliangluojiaodian.__hasMessage__
except:
__hasMessage__=None
if __hasMessage__ and __hasMessage__!="否":
tablename=session.get("tablename")
if tablename!="users" and session.get("params")!=None and cheliangluojiaodian!='chat':
req_dict["userid"]=session.get("params").get("id")
tablename=session.get("tablename")
if tablename=="users" :
try:
pass
except:
pass
else:
mapping_str_to_object = {}
for model in Base_model._decl_class_registry.values():
if hasattr(model, '__tablename__'):
mapping_str_to_object[model.__tablename__] = model
try:
__isAdmin__=mapping_str_to_object[tablename].__isAdmin__
except:
__isAdmin__=None
try:
__authSeparate__ =mapping_str_to_object[tablename].__authSeparate__
except:
__authSeparate__ = None
if __isAdmin__!="是" and __authSeparate__ == "是" and session.get("params")!=None:
req_dict["userid"]=session.get("params").get("id")
else:
try:
del req_dict["userid"]
except:
pass
# 当前表也是有管理员权限的表
if __isAdmin__ == "是" and 'cheliangluojiaodian' != 'forum':
if req_dict.get("userid") and 'cheliangluojiaodian' != 'chat':
del req_dict["userid"]
else:
#非管理员权限的表,判断当前表字段名是否有userid
if tablename!="users" and 'cheliangluojiaodian'[:7]!='discuss'and "userid" in cheliangluojiaodian.getallcolumn(cheliangluojiaodian,cheliangluojiaodian):
req_dict["userid"] = session.get("params").get("id")
clause_args = []
or_clauses = or_(*clause_args)
msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
msg['data']['pageSize'] = cheliangluojiaodian.page(cheliangluojiaodian, cheliangluojiaodian, req_dict, or_clauses)
return jsonify(msg)
# 排序接口
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/autoSort", methods=['GET'])
def pythonpu284ve5_cheliangluojiaodian_autosort():
'''
'''
if request.method == 'GET':
msg = {"code": normal_code, "msg": "success", "data":{"currPage":1,"totalPage":1,"total":1,"pageSize":10,"list":[]}}
req_dict = session.get("req_dict")
req_dict['sort']='clicktime'
req_dict['order']='desc'
try:
__browseClick__= cheliangluojiaodian.__browseClick__
except:
__browseClick__=None
if __browseClick__ =='是':
req_dict['sort']='clicknum'
elif __browseClick__ =='时长':
req_dict['sort']='browseduration'
else:
req_dict['sort']='clicktime'
msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
msg['data']['pageSize'] = cheliangluojiaodian.page(cheliangluojiaodian, cheliangluojiaodian, req_dict)
return jsonify(msg)
#查询单条数据
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/query", methods=['GET'])
def pythonpu284ve5_cheliangluojiaodian_query():
if request.method == 'GET':
msg = {"code": normal_code, "msg": "success", "data":{}}
req_dict = session.get("req_dict")
query = db.session.query(cheliangluojiaodian)
for key, value in req_dict.items():
query = query.filter(getattr(cheliangluojiaodian, key) == value)
query_result = query.first()
query_result.__dict__.pop('_sa_instance_state', None)
msg['data'] = query_result.__dict__
return jsonify(msg)
# 分页接口(前端)
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/list", methods=['GET'])
def pythonpu284ve5_cheliangluojiaodian_list():
'''
'''
if request.method == 'GET':
msg = {"code": normal_code, "msg": "success", "data":{"currPage":1,"totalPage":1,"total":1,"pageSize":10,"list":[]}}
req_dict = session.get("req_dict")
if req_dict.__contains__('vipread'):
del req_dict['vipread']
userinfo = session.get("params")
try:
__foreEndList__=cheliangluojiaodian.__foreEndList__
except:
__foreEndList__=None
if __foreEndList__ and __foreEndList__!="否":
tablename=session.get("tablename")
if tablename!="users" and session.get("params")!=None:
req_dict['userid']=session.get("params").get("id")
try:
__foreEndListAuth__=cheliangluojiaodian.__foreEndListAuth__
except:
__foreEndListAuth__=None
if __foreEndListAuth__ and __foreEndListAuth__!="否":
tablename=session.get("tablename")
if tablename!="users" and session.get("params")!=None:
req_dict['userid']=session.get("params").get("id")
tablename=session.get("tablename")
if tablename=="users" :
try:
del req_dict["userid"]
except:
pass
else:
mapping_str_to_object = {}
for model in Base_model._decl_class_registry.values():
if hasattr(model, '__tablename__'):
mapping_str_to_object[model.__tablename__] = model
try:
__isAdmin__=mapping_str_to_object[tablename].__isAdmin__
except:
__isAdmin__=None
if __isAdmin__!="是" and session.get("params")!=None:
req_dict["userid"]=session.get("params").get("id")
if 'luntan' in 'cheliangluojiaodian':
if 'userid' in req_dict.keys():
del req_dict["userid"]
if 'discuss' in 'cheliangluojiaodian':
if 'userid' in req_dict.keys():
del req_dict["userid"]
msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
msg['data']['pageSize'] = cheliangluojiaodian.page(cheliangluojiaodian, cheliangluojiaodian, req_dict)
return jsonify(msg)
# 保存接口(后端)
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/save", methods=['POST'])
def pythonpu284ve5_cheliangluojiaodian_save():
'''
'''
if request.method == 'POST':
msg = {"code": normal_code, "msg": "success", "data": {}}
req_dict = session.get("req_dict")
for key in req_dict:
if req_dict[key] == '':
req_dict[key] = None
error= cheliangluojiaodian.createbyreq(cheliangluojiaodian, cheliangluojiaodian, req_dict)
if error!=None:
msg['code'] = crud_error_code
msg['msg'] = error
return jsonify(msg)
# 添加接口(前端)
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/add", methods=['POST'])
def pythonpu284ve5_cheliangluojiaodian_add():
'''
'''
if request.method == 'POST':
msg = {"code": normal_code, "msg": "success", "data": {}}
req_dict = session.get("req_dict")
try:
__foreEndListAuth__=cheliangluojiaodian.__foreEndListAuth__
except:
__foreEndListAuth__=None
if __foreEndListAuth__ and __foreEndListAuth__!="否":
tablename=session.get("tablename")
if tablename!="users":
req_dict['userid']=session.get("params").get("id")
error= cheliangluojiaodian.createbyreq(cheliangluojiaodian, cheliangluojiaodian, req_dict)
if error!=None:
msg['code'] = crud_error_code
msg['msg'] = error
return jsonify(msg)
# 踩、赞接口
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/thumbsup/<id_>", methods=['GET'])
def pythonpu284ve5_cheliangluojiaodian_thumbsup(id_):
'''
'''
if request.method == 'GET':
msg = {"code": normal_code, "msg": "success", "data": {}}
req_dict = session.get("req_dict")
id_=int(id_)
type_=int(req_dict.get("type",0))
rets=cheliangluojiaodian.getbyid(cheliangluojiaodian, cheliangluojiaodian,id_)
update_dict={
"id":id_,
}
if type_==1:#赞
update_dict["thumbsupnum"]=int(rets[0].get('thumbsupnum'))+1
elif type_==2:#踩
update_dict["crazilynum"]=int(rets[0].get('crazilynum'))+1
error = cheliangluojiaodian.updatebyparams(cheliangluojiaodian, cheliangluojiaodian, update_dict)
if error!=None:
msg['code'] = crud_error_code
msg['msg'] = error
return jsonify(msg)
# 获取详情信息(后端)
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/info/<id_>", methods=['GET'])
def pythonpu284ve5_cheliangluojiaodian_info(id_):
'''
'''
if request.method == 'GET':
msg = {"code": normal_code, "msg": "success", "data": {}}
data = cheliangluojiaodian.getbyid(cheliangluojiaodian, cheliangluojiaodian, int(id_))
if len(data)>0:
msg['data']=data[0]
#浏览点击次数
try:
__browseClick__= cheliangluojiaodian.__browseClick__
except:
__browseClick__=None
if __browseClick__ and "clicknum" in cheliangluojiaodian.__table__.columns:
click_dict={"id":int(id_),"clicknum":str(int(data[0].get("clicknum") or 0)+1)}
ret=cheliangluojiaodian.updatebyparams(cheliangluojiaodian,cheliangluojiaodian,click_dict)
if ret!=None:
msg['code'] = crud_error_code
msg['msg'] = ret
return jsonify(msg)
# 获取详情信息(前端)
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/detail/<id_>", methods=['GET'])
def pythonpu284ve5_cheliangluojiaodian_detail(id_):
'''
'''
if request.method == 'GET':
msg = {"code": normal_code, "msg": "success", "data": {}}
data = cheliangluojiaodian.getbyid(cheliangluojiaodian, cheliangluojiaodian, int(id_))
if len(data)>0:
msg['data']=data[0]
#浏览点击次数
try:
__browseClick__= cheliangluojiaodian.__browseClick__
except:
__browseClick__=None
if __browseClick__ and "clicknum" in cheliangluojiaodian.__table__.columns:
click_dict={"id":int(id_),"clicknum":str(int(data[0].get("clicknum") or 0)+1)}
ret=cheliangluojiaodian.updatebyparams(cheliangluojiaodian,cheliangluojiaodian,click_dict)
if ret!=None:
msg['code'] = crud_error_code
msg['msg'] = ret
return jsonify(msg)
# 更新接口
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/update", methods=['POST'])
def pythonpu284ve5_cheliangluojiaodian_update():
'''
'''
if request.method == 'POST':
msg = {"code": normal_code, "msg": "success", "data": {}}
req_dict = session.get("req_dict")
if req_dict.get("mima") and "mima" not in cheliangluojiaodian.__table__.columns :
del req_dict["mima"]
if req_dict.get("password") and "password" not in cheliangluojiaodian.__table__.columns :
del req_dict["password"]
try:
del req_dict["clicknum"]
except:
pass
error = cheliangluojiaodian.updatebyparams(cheliangluojiaodian, cheliangluojiaodian, req_dict)
if error!=None:
msg['code'] = crud_error_code
msg['msg'] = error
return jsonify(msg)
# 删除接口
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/delete", methods=['POST'])
def pythonpu284ve5_cheliangluojiaodian_delete():
'''
'''
if request.method == 'POST':
msg = {"code": normal_code, "msg": "success", "data": {}}
req_dict = session.get("req_dict")
error=cheliangluojiaodian.delete(
cheliangluojiaodian,
req_dict
)
if error!=None:
msg['code'] = crud_error_code
msg['msg'] = error
return jsonify(msg)
# 投票接口
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/vote/<int:id_>", methods=['POST'])
def pythonpu284ve5_cheliangluojiaodian_vote(id_):
'''
'''
if request.method == 'POST':
msg = {"code": normal_code, "msg": "success"}
data= cheliangluojiaodian.getbyid(cheliangluojiaodian, cheliangluojiaodian, int(id_))
for i in data:
votenum=i.get('votenum')
if votenum!=None:
params={"id":int(id_),"votenum":votenum+1}
error=cheliangluojiaodian.updatebyparams(cheliangluojiaodian,cheliangluojiaodian,params)
if error!=None:
msg['code'] = crud_error_code
msg['msg'] = error
return jsonify(msg)
# 分组统计接口
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/group/<columnName>", methods=['GET'])
def pythonpu284ve5_cheliangluojiaodian_group(columnName):
'''
分组统计接口
'''
if request.method == 'GET':
msg = {"code": normal_code, "msg": "success", "data": {}}
req_dict = session.get("req_dict")
userinfo = session.get("params")
msg['data'] = cheliangluojiaodian.groupbycolumnname(cheliangluojiaodian,cheliangluojiaodian,columnName,req_dict)
msg['data'] = msg['data'][:10]
msg['data'] = [ {**i,columnName:str(i[columnName])} if columnName in i else i for i in msg['data']]
json_filename='cheliangluojiaodian'+f'_group_{columnName}.json'
where = ' where 1 = 1 '
sql = "SELECT COUNT(*) AS total, " + columnName + " FROM cheliangluojiaodian " + where + " GROUP BY " + columnName
with open(json_filename, 'w', encoding='utf-8') as f:
f.write(json.dumps(msg['data'], indent=4, ensure_ascii=False))
app.executor.submit(upload_to_hdfs, json_filename)
app.executor.submit(MRMySQLAvg.run)
return jsonify(msg)
# 按值统计接口
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/value/<xColumnName>/<yColumnName>", methods=['GET'])
def pythonpu284ve5_cheliangluojiaodian_value(xColumnName, yColumnName):
'''
按值统计接口,
{
"code": 0,
"data": [
{
"total": 10.0,
"shangpinleibie": "aa"
},
{
"total": 20.0,
"shangpinleibie": "bb"
},
{
"total": 15.0,
"shangpinleibie": "cc"
}
]
}
'''
if request.method == 'GET':
msg = {"code": normal_code, "msg": "success", "data": {}}
req_dict = session.get("req_dict")
userinfo = session.get("params")
msg['data'] = cheliangluojiaodian.getvaluebyxycolumnname(cheliangluojiaodian,cheliangluojiaodian,xColumnName,yColumnName,req_dict)
msg['data'] = msg['data'][:10]
return jsonify(msg)
# 按日期统计接口
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/value/<xColumnName>/<yColumnName>/<timeStatType>", methods=['GET'])
def pythonpu284ve5_cheliangluojiaodian_value_riqi(xColumnName, yColumnName, timeStatType):
'''
按日期统计接口
'''
if request.method == 'GET':
msg = {"code": normal_code, "msg": "success", "data": {}}
userinfo = session.get("params")
where = ' where 1 = 1 '
sql = ''
if timeStatType == '日':
sql = "SELECT DATE_FORMAT({0}, '%Y-%m-%d') {0}, sum({1}) total FROM cheliangluojiaodian {2} GROUP BY DATE_FORMAT({0}, '%Y-%m-%d')".format(xColumnName, yColumnName, where, '%Y-%m-%d')
if timeStatType == '月':
sql = "SELECT DATE_FORMAT({0}, '%Y-%m') {0}, sum({1}) total FROM cheliangluojiaodian {2} GROUP BY DATE_FORMAT({0}, '%Y-%m')".format(xColumnName, yColumnName, where, '%Y-%m')
if timeStatType == '年':
sql = "SELECT DATE_FORMAT({0}, '%Y') {0}, sum({1}) total FROM cheliangluojiaodian {2} GROUP BY DATE_FORMAT({0}, '%Y')".format(xColumnName, yColumnName, where, '%Y')
data = db.session.execute(sql)
data = data.fetchall()
results = []
for i in range(len(data)):
result = {
xColumnName: decimalEncoder(data[i][0]),
'total': decimalEncoder(data[i][1])
}
results.append(result)
msg['data'] = results
json_filename='cheliangluojiaodian'+f'_value_{xColumnName}_{yColumnName}.json'
with open(json_filename, 'w', encoding='utf-8') as f:
f.write(json.dumps(results, indent=4, ensure_ascii=False))
app.executor.submit(upload_to_hdfs, json_filename)
app.executor.submit(MRMySQLAvg.run)
return jsonify(msg)
# 按值统计(多)
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/valueMul/<xColumnName>", methods=['GET'])
def pythonpu284ve5_cheliangluojiaodian_valueMul(xColumnName):
if request.method == 'GET':
msg = {"code": normal_code, "msg": "success", "data": []}
req_dict = session.get("req_dict")
userinfo = session.get("params")
where = ' where 1 = 1 '
for item in req_dict['yColumnNameMul'].split(','):
sql = "SELECT {0}, sum({1}) AS total FROM cheliangluojiaodian {2} GROUP BY {0} LIMIT 10".format(xColumnName, item, where)
L = []
data = db.session.execute(sql)
data = data.fetchall()
for i in range(len(data)):
result = {
xColumnName: decimalEncoder(data[i][0]),
'total': decimalEncoder(data[i][1])
}
L.append(result)
msg['data'].append(L)
return jsonify(msg)
# 按值统计(多)
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/valueMul/<xColumnName>/<timeStatType>", methods=['GET'])
def pythonpu284ve5_cheliangluojiaodian_valueMul_time(xColumnName,timeStatType):
if request.method == 'GET':
msg = {"code": normal_code, "msg": "success", "data": []}
req_dict = session.get("req_dict")
userinfo = session.get("params")
where = ' where 1 = 1 '
for item in req_dict['yColumnNameMul'].split(','):
sql = ''
if timeStatType == '日':
sql = "SELECT DATE_FORMAT({0}, '%Y-%m-%d') {0}, sum({1}) total FROM cheliangluojiaodian {2} GROUP BY DATE_FORMAT({0}, '%Y-%m-%d') LIMIT 10".format(xColumnName, item, where, '%Y-%m-%d')
if timeStatType == '月':
sql = "SELECT DATE_FORMAT({0}, '%Y-%m') {0}, sum({1}) total FROM cheliangluojiaodian {2} GROUP BY DATE_FORMAT({0}, '%Y-%m') LIMIT 10".format(xColumnName, item, where, '%Y-%m')
if timeStatType == '年':
sql = "SELECT DATE_FORMAT({0}, '%Y') {0}, sum({1}) total FROM cheliangluojiaodian {2} GROUP BY DATE_FORMAT({0}, '%Y') LIMIT 10".format(xColumnName, item, where, '%Y')
L = []
data = db.session.execute(sql)
data = data.fetchall()
for i in range(len(data)):
result = {
xColumnName: decimalEncoder(data[i][0]),
'total': decimalEncoder(data[i][1])
}
L.append(result)
msg['data'].append(L)
return jsonify(msg)
# 统计接口
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/remind/<columnName>/<type>", methods=['GET']) #
def pythonpu284ve5_cheliangluojiaodian_remind(columnName,type):
'''
'''
if request.method == 'GET':
msg = {"code": normal_code, 'count': 0}
# 组合查询参数
params = session.get("req_dict")
remindstart = 0
remindend =9999990
if int(type)==1:#数字
if params.get('remindstart') == None and params.get('remindend') != None:
remindstart = 0
remindend = int(params['remindend'])
elif params.get('remindstart') != None and params.get('remindend') == None:
remindstart = int(params['remindstart'])
remindend = 999999
elif params.get('remindstart') == None and params.get('remindend') == None:
remindstart = 0
remindend = 999999
else:
remindstart = params.get('remindstart')
remindend = params.get('remindend')
elif int(type)==2:#日期
current_time=int(time.time())
if params.get('remindstart') == None and params.get('remindend') != None:
starttime=current_time-60*60*24*365*2
params['remindstart'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(starttime))
endtime=current_time+60*60*24*params.get('remindend')
params['remindend'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(endtime))
elif params.get('remindstart') != None and params.get('remindend') == None:
starttime= current_time - 60 * 60 * 24 * params.get('remindstart')
params['remindstart']=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(starttime))
endtime=current_time+60*60*24*365*2
params['remindend'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(endtime))
elif params.get('remindstart') == None and params.get('remindend') == None:
starttime = current_time - 60 * 60 * 24 * 365 * 2
params['remindstart'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(starttime))
endtime = current_time + 60 * 60 * 24 * 365 * 2
params['remindend'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(endtime))
data = cheliangluojiaodian.getbetweenparams(
cheliangluojiaodian,
cheliangluojiaodian,
columnName,
{
"remindStart": remindstart,
"remindEnd": remindend
}
)
msg['count'] = len(data)
return jsonify(msg)
#分类列表
@main_bp.route("/pythonpu284ve5/cheliangluojiaodian/lists", methods=['GET'])
def pythonpu284ve5_cheliangluojiaodian_lists():
if request.method == 'GET':
msg = {"code": normal_code, "msg": "success", "data": []}
list,_,_,_,_ = cheliangluojiaodian.page(cheliangluojiaodian,cheliangluojiaodian,{})
msg['data'] = list
return jsonify(msg)

为什么选择我(我可以给你的定制项目推荐核心功能,一对一推荐)实现定制!!!
博主提供的项目均为博主自己收集和开发的!所有的源码都经由博主检验过,能过正常启动并且功能都没有问题!同学们拿到后就能使用!且博主自身就是高级开发,可以将所有的代码都清晰讲解出来。
源码获取
文章下方名片联系我即可~
大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻
精彩专栏推荐订阅:在下方专栏
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)