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)) 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.run(host='0.0.0.0', port=8888, debug=True)