|
|
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):
|
|
|
return send_file(path, as_attachment=True, download_name="PPT版本" + str(year) + "年年报.pptx")
|
|
|
|
|
|
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='发布成功!')
|
|
|
|
|
|
|
|
|
# 登录接口
|
|
|
# http://127.0.0.1:8888/Mars/doLogin?org_name=青山桥镇鳌鱼学校
|
|
|
@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
|
|
|
# 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
|
|
|
# http://127.0.0.1:8888/Mars/listTaskForSchool?page=1&limit=50
|
|
|
# http://192.168.100.100:8888/Mars/listTaskForSchool?page=1&limit=50
|
|
|
@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))
|
|
|
|
|
|
|
|
|
# 获取表单类型
|
|
|
@app.route('/Mars/getFormTypeList', methods=['GET'])
|
|
|
def getFormTypeList():
|
|
|
res, cnt = hm.getFormTypeList()
|
|
|
return jsonify(CommonUtil.renderJsonForLayUI(res, cnt))
|
|
|
|
|
|
|
|
|
@app.route('/Mars/getFormType', methods=['GET'])
|
|
|
def getFormType():
|
|
|
type_id = request.args.get("type_id")
|
|
|
res, cnt = hm.getFormType(type_id)
|
|
|
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='保存成功')
|
|
|
|
|
|
|
|
|
# 根据单位代码获取单位信息
|
|
|
# http://127.0.0.1:8888/Mars/getBureauInfoByOrganizationNo?organizationno=1143014532
|
|
|
@app.route('/Mars/getBureauInfoByOrganizationNo', methods=['GET'])
|
|
|
def getBureauInfoByOrganizationNo():
|
|
|
organizationno = request.args.get("organizationno")
|
|
|
data = hm.getBureauInfoByOrganizationNo(organizationno)
|
|
|
return jsonify(data)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
# 生产环境配置方法
|
|
|
# http://127.0.0.1:8888/Mars/exportDoc?year=2020
|
|
|
# http://127.0.0.1:8888/Mars/exportPpt?year=2020
|
|
|
|
|
|
# server = pywsgi.WSGIServer(('0.0.0.0', 8888), app)
|
|
|
# server.serve_forever()
|
|
|
app.config['JSON_AS_ASCII'] = False
|
|
|
# 调试环境配置方法
|
|
|
app.run(host='0.0.0.0', port=8888, debug=True)
|