You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

381 lines
13 KiB

2 years ago
import os
from flask import (
Flask,
send_file, request, jsonify, make_response
)
from gevent import pywsgi
from Model.Bussines import *
from Model.HuiJiModel import *
from Utils.OfficeUtil import *
app = Flask(__name__)
# 当前目录
file_path_and_name = os.path.abspath(__file__)
basepath = os.path.dirname(os.path.abspath(__file__))
#  model层实例
hm = HuiJiModel()
# 异步获取报送单位数据
@app.route('/Mars/getSelectTree', methods=['GET'])
def getSelectTree():
_id = request.args.get("id")
return hm.getSelectTree(_id)
# 所有县区
@app.route('/Mars/getXianQu', methods=['GET'])
def getXianQu():
res = hm.getXianQu()
return jsonify(success=True, message='获取成功', data=res)
@app.route('/Mars/exportPpt', methods=['GET'])
def exportPpt():
year = int(request.args.get("year"))
path = basepath + '/Out/' + str(year) + '.pptx'
# 如果存在,直接返回
if os.path.exists(path):
2 years ago
return send_file(path, as_attachment=True, download_name="PPT版本" + str(year) + "年年报.pptx")
2 years ago
from_to = str(year) + "-" + str(year + 1) # 开始终止年份
# 修改Ppt
ppt = Presentation(basepath + '/Template/Template.pptx')
# 替换城市
PptReplaceText(ppt, '{city}', city)
# 替换年份
PptReplaceText(ppt, '{year}', from_to)
ReplaceTxtInTable(ppt, '{year}', from_to)
# 以下五个有图有数
data = getSchoolInfo(basepath, year) # 获取学校情况
for key in data:
PptReplaceText(ppt, "{" + key + "}", str(data[key]))
ReplaceTxtInTable(ppt, "{" + key + "}", str(data[key]))
data = getStudentInfo(basepath, year) # 获取学生情况
for key in data:
PptReplaceText(ppt, "{" + key + "}", str(data[key]))
ReplaceTxtInTable(ppt, "{" + key + "}", str(data[key]))
data = getJzgInfo(basepath, year) # 获取教职工
for key in data:
PptReplaceText(ppt, "{" + key + "}", str(data[key]))
ReplaceTxtInTable(ppt, "{" + key + "}", str(data[key]))
data = getZrjsInfo(basepath, year) # 获取专任教师
for key in data:
PptReplaceText(ppt, "{" + key + "}", str(data[key]))
ReplaceTxtInTable(ppt, "{" + key + "}", str(data[key]))
data = getZdmjInfo(basepath, year) # 获取办学条件的占地面积
for key in data:
PptReplaceText(ppt, "{" + key + "}", str(data[key]))
ReplaceTxtInTable(ppt, "{" + key + "}", str(data[key]))
# 办学条件的其它,这个没有图
data = getQtInfo(year)
for key in data:
PptReplaceText(ppt, "{" + key + "}", str(data[key]))
ReplaceTxtInTable(ppt, "{" + key + "}", str(data[key]))
# 替换图片
for i in range(1, 6):
PptReplacePic(ppt, basepath + "/OutImage/" + str(i) + ".png", basepath + "/Image/" + str(i) + ".png")
# 生成PowerPoint文档 
ppt.save(path)
print("恭喜PowerPoint文档替换文字与图片成功完成")
return send_file(path, as_attachment=True, download_name="PPT版本" + str(year) + "年年报.pptx")
@app.route('/Mars/exportDoc', methods=['GET'])
def exportDoc():
year = int(request.args.get("year"))
path = basepath + '/Out/' + str(year) + '.docx'
# 如果存在,直接返回
if os.path.exists(path):
return send_file(path, as_attachment=True, download_name="Word版本" + str(year) + "年年报.docx")
from_to = str(year) + "-" + str(year + 1) # 开始终止年份
# 修改Word
document = Document(basepath + "/Template/Template.docx")
# 替换城市
WordReplaceText(document, "{city}", city)
# 替换年份
WordReplaceText(document, "{year}", from_to)
# 以下五个有图有数
data = getSchoolInfo(basepath, year) # 获取学校情况
for key in data:
WordReplaceText(document, "{" + key + "}", str(data[key]))
data = getStudentInfo(basepath, year) # 获取学生情况
for key in data:
WordReplaceText(document, "{" + key + "}", str(data[key]))
data = getJzgInfo(basepath, year) # 获取教职工
for key in data:
WordReplaceText(document, "{" + key + "}", str(data[key]))
data = getZrjsInfo(basepath, year) # 获取专任教师
for key in data:
WordReplaceText(document, "{" + key + "}", str(data[key]))
data = getZdmjInfo(basepath, year) # 获取办学条件的占地面积
for key in data:
WordReplaceText(document, "{" + key + "}", str(data[key]))
# 办学条件的其它,这个没有图
data = getQtInfo(year)
for key in data:
WordReplaceText(document, "{" + key + "}", str(data[key]))
# 替换图片
for i in range(1, 6):
WordReplacePic(document, "{pic" + str(i) + "}", basepath + "/OutImage/" + str(i) + ".jpg")
# 生成Word文档 
document.save(path)
print("恭喜Word文档替换文字与图片成功完成")
return send_file(path, as_attachment=True, download_name="Word版本" + str(year) + "年年报.docx")
# 创建模板
@app.route('/Mars/createModule', methods=['POST'])
def createModule():
module_name = request.form.get("module_name")
module_body = request.form.get("module_body")
module_id = hm.createModule(module_name=module_name, module_body=module_body)
return jsonify(success=True, module_id=module_id, message='保存成功')
# 修改模板
@app.route('/Mars/updateModule', methods=['POST'])
def updateModule():
module_id = request.form.get("module_id")
module_name = request.form.get("module_name")
module_body = request.form.get("module_body")
res = hm.updateModule(module_id=module_id, module_name=module_name, module_body=module_body)
return jsonify(success=res['success'], message=res['message'])
#  删除模板
@app.route('/Mars/delModule', methods=['POST'])
def delModule():
module_id = request.form.get("module_id")
flag = hm.delModule(module_id=module_id)
if flag:
return jsonify(success=True, message='保存成功')
else:
return jsonify(success=False, message='此模板已被使用,不能删除!')
#  获取模板
@app.route('/Mars/getModule', methods=['GET'])
def getModule():
module_id = request.args.get("module_id")
res = hm.getModule(module_id)
print(res)
return jsonify(success=True, message='查询成功', data=res)
# 获取模块列表,支持关键字查询
@app.route('/Mars/listModule', methods=['GET'])
def listModule():
keyword = request.args.get("keyword")
page = int(request.args.get("page"))
limit = int(request.args.get("limit"))
res, cnt = hm.listModule(keyword, page, limit)
return jsonify(CommonUtil.renderJsonForLayUI(res, cnt))
'''=================================================================================================================='''
# 创建任务
@app.route('/Mars/createTask', methods=['POST'])
def createTask():
module_id = request.form.get("module_id")
task_name = request.form.get("task_name")
range_json = request.form.get("range_json")
end_date = request.form.get("end_date")
hm.createTask(module_id, task_name, range_json, end_date)
return jsonify(success=True, message='创建成功')
# 修改任务
@app.route('/Mars/updateTask', methods=['POST'])
def updateTask():
task_id = request.form.get("task_id")
task_name = request.form.get("task_name")
range_json = request.form.get("range_json")
end_date = request.form.get("end_date")
module_id = request.form.get("module_id")
hm.updateTask(task_id, module_id, task_name, range_json, end_date)
return jsonify(success=True, message='保存成功')
# 删除任务
@app.route('/Mars/delTask', methods=['POST'])
def delTask():
task_id = request.form.get("task_id")
hm.delTask(task_id)
return jsonify(success=True, message='保存成功')
# 获取任务
@app.route('/Mars/getTask', methods=['GET'])
def getTask():
task_id = request.args.get("task_id")
res = hm.getTask(task_id)
# 扩展一下前缀
expandInfo = hm.expandTaskReceiveOrgsPrefix(res)
res["expandInfo"] = expandInfo
return jsonify(success=True, message='获取成功', data=res)
# 获取任务列表
@app.route('/Mars/listTask', methods=['GET'])
def listTask():
page = int(request.args.get("page"))
limit = int(request.args.get("limit"))
keyword = request.args.get("keyword")
is_publish = -1
if request.args.get("is_publish") is not None:
is_publish = int(request.args.get("is_publish"))
res, cnt = hm.listTask(keyword, page, limit, is_publish)
return jsonify(CommonUtil.renderJsonForLayUI(res, cnt))
# 发布任务
@app.route('/Mars/publishTask', methods=['POST'])
def publishTask():
task_id = int(request.form.get("task_id"))
hm.publishTask(task_id)
return jsonify(success=True, message='发布成功!')
# 登录接口
2 years ago
# http://127.0.0.1:8888/Mars/doLogin?org_name=青山桥镇鳌鱼学校
2 years ago
@app.route('/Mars/doLogin', methods=['GET'])
def doLogin():
org_name = request.args.get("org_name")
organizationno = hm.doLogin(org_name)
resp = make_response(jsonify(success=True, message='登录成功!')) # "success"是响应体
resp.set_cookie("organizationno", organizationno, httponly=True)
return resp
# 保存学校端的录入结果
@app.route('/Mars/updateTaskForSchool', methods=['POST'])
def updateTaskForSchool():
org_code = request.cookies.get("organizationno")
if org_code is None:
return jsonify(success=False, message='请先登录后再进行操作')
task_id = request.form.get("task_id")
resultJson = request.form.get("resultJson")
hm.updateTaskForSchool(org_code, task_id, resultJson)
return jsonify(success=True, message='保存成功')
# 获取任务列表For School
2 years ago
# http://192.168.100.100:8888/Mars/doLogin?org_name=%E6%A1%83%E6%BA%90%E5%8E%BF%E9%BB%84%E7%9F%B3%E9%95%87%E4%B8%AD%E5%AD%A6
2 years ago
# http://127.0.0.1:8888/Mars/listTaskForSchool?page=1&limit=50
2 years ago
# http://192.168.100.100:8888/Mars/listTaskForSchool?page=1&limit=50
2 years ago
@app.route('/Mars/listTaskForSchool', methods=['GET'])
def listTaskForSchool():
org_code = request.cookies.get("organizationno")
if org_code is None:
return jsonify(success=False, message='请先登录后再进行操作')
page = int(request.args.get("page"))
limit = int(request.args.get("limit"))
keyword = request.args.get("keyword")
flag = request.args.get("flag")
res, cnt = hm.listTaskForSchool(keyword, org_code, flag, page, limit)
return jsonify(CommonUtil.renderJsonForLayUI(res, cnt))
# 显示某条任务的填报情况
@app.route('/Mars/getTaskForSchool', methods=['GET'])
def getTaskForSchool():
org_code = request.args.get("org_code")
if org_code is None:
org_code = request.cookies.get("organizationno")
if org_code is None:
return jsonify(success=False, message='请先登录后再进行操作')
task_id = request.args.get("task_id")
data = hm.getTaskForSchool(org_code, task_id)
return jsonify(data)
# http://127.0.0.1:8888/Mars/getTaskFillInfo?task_id=1&page=1&limit=50&flag=0
# 获取填报情况
@app.route('/Mars/getTaskFillInfo', methods=['GET'])
def getTaskFillInfo():
task_id = request.args.get("task_id")
page = int(request.args.get("page"))
limit = int(request.args.get("limit"))
flag = request.args.get("flag")
res, cnt = hm.getTaskFillInfo(task_id, flag, page, limit)
return jsonify(CommonUtil.renderJsonForLayUI(res, cnt))
2 years ago
# 获取表单类型
2 years ago
@app.route('/Mars/getFormTypeList', methods=['GET'])
def getFormTypeList():
res, cnt = hm.getFormTypeList()
return jsonify(CommonUtil.renderJsonForLayUI(res, cnt))
2 years ago
@app.route('/Mars/getFormType', methods=['GET'])
def getFormType():
2 years ago
type_id = request.args.get("type_id")
res, cnt = hm.getFormType(type_id)
2 years ago
return jsonify(CommonUtil.renderJsonForLayUI(res, cnt))
@app.route('/Mars/addFormType', methods=['POST'])
def addFormType():
type_name = request.args.get("type_name")
hm.addFormType(type_name)
return jsonify(success=True, message='保存成功')
@app.route('/Mars/updateFormType', methods=['POST'])
def updateFormType():
type_id = request.args.get("type_id")
type_name = request.args.get("type_name")
hm.updateFormType(type_id, type_name)
return jsonify(success=True, message='保存成功')
@app.route('/Mars/delFormType', methods=['POST'])
def delFormType():
type_id = request.args.get("type_id")
hm.delFormType(type_id)
return jsonify(success=True, message='保存成功')
2 years ago
# 根据单位代码获取单位信息
2 years ago
# http://127.0.0.1:8888/Mars/getBureauInfoByOrganizationNo?organizationno=1143014532
@app.route('/Mars/getBureauInfoByOrganizationNo', methods=['GET'])
2 years ago
def getBureauInfoByOrganizationNo():
2 years ago
organizationno = request.args.get("organizationno")
data = hm.getBureauInfoByOrganizationNo(organizationno)
2 years ago
return jsonify(data)
2 years ago
if __name__ == '__main__':
# 生产环境配置方法
# http://127.0.0.1:8888/Mars/exportDoc?year=2020
# http://127.0.0.1:8888/Mars/exportPpt?year=2020
2 years ago
# server = pywsgi.WSGIServer(('0.0.0.0', 8888), app)
# server.serve_forever()
2 years ago
app.config['JSON_AS_ASCII'] = False
2 years ago
# 调试环境配置方法
app.run(host='0.0.0.0', port=8888, debug=True)