From e06824f40b91d060a41ada2aec7e131ad74386ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E9=A0=94=E5=AE=87?= Date: Thu, 30 Jul 2020 14:12:52 +0800 Subject: [PATCH] first commit --- hrapi.py | 300 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 300 insertions(+) create mode 100644 hrapi.py diff --git a/hrapi.py b/hrapi.py new file mode 100644 index 0000000..a4bd4f8 --- /dev/null +++ b/hrapi.py @@ -0,0 +1,300 @@ +# -*- coding: utf-8 -* +import logging +from flask import Flask, jsonify, request, abort +from time import strftime, strptime +import requests +from xml.etree import ElementTree + +def is_number(s): + try: + float(s) + return True + except ValueError: + pass + try: + import unicodedata + unicodedata.numeric(s) + return True + except (TypeError, ValueError): + pass + return False + +app = Flask(__name__) + +post_data = {"FunID":"", + "Language":1, + "Data":{} + } +form_data = {} +hr_url = "http://10.1.0.50:18010/RESTService/SaveOrUpdate" +return_data = { + "Success":True, + "Message":"" +} + +@app.route('/api/hr/RS031001', methods=['POST']) +# 人员异动申请 +def RS031001(): + if not request.form or not 'EmpNo' in request.form.to_dict(): + abort(406) + post_data['FunID'] = 'RS031001' + post_data['Data'] = request.form.to_dict() + try: + YYMMDD = strptime(post_data['Data']['YYMMDD'],"%a %b %d %H:%M:%S CST %Y") + post_data['Data']['YYMMDD'] = strftime("%Y-%m-%d",YYMMDD) + except (ValueError,KeyError) as e: + app.logger.error(e) + try: + AppForDate = strptime(post_data['Data']['AppForDate'],"%a %b %d %H:%M:%S CST %Y") + post_data['Data']['AppForDate'] = strftime("%Y-%m-%d",AppForDate) + except (ValueError,KeyError) as e: + app.logger.error(e) + try: + TryuseDate = strptime(post_data['Data']['TryuseDate'],"%a %b %d %H:%M:%S CST %Y") + post_data['Data']['TryuseDate'] = strftime("%Y-%m-%d",TryuseDate) + except (ValueError,KeyError) as e: + app.logger.error(e) + try: + r = requests.post(hr_url,data=post_data.__str__().encode('utf-8')) + if r.json()['Success']: + return_data['Success'] = True + return_data['Message'] = r.json()['Data'] + else: + return_data['Success'] = False + return_data['Message'] = r.json()['Message'] + return jsonify(return_data), 200 + except requests.exceptions.RequestException as e: + app.logger.error(e) + return_data['Success'] = False + return_data['Message'] = '接口出错!' + return jsonify(return_data), 200 + +@app.route('/api/hr/KQ061001', methods=['POST']) +# 人员签卡申请 +def KQ061001(): + if not request.form or not 'EmpNo' in request.form.to_dict(): + abort(406) + post_data['FunID'] = 'KQ061001' + post_data['Data'] = request.form.to_dict() + try: + r = requests.post(hr_url,data=post_data.__str__().encode('utf-8')) + if r.json()['Success']: + return_data['Success'] = True + return_data['Message'] = r.json()['Data'] + else: + return_data['Success'] = False + return_data['Message'] = r.json()['Message'] + return jsonify(return_data), 200 + except: + abort(500) + +@app.route('/api/hr/KQ043001', methods=['POST']) +# 个人加班申请 +def KQ043001(): + if not request.form or not 'EmpNo' in request.form.to_dict(): + abort(406) + post_data['FunID'] = 'KQ043001' + post_data['Data'] = request.form.to_dict() + try: + r = requests.post(hr_url,data=post_data.__str__().encode('utf-8')) + if r.json()['Success']: + return_data['Success'] = True + return_data['Message'] = r.json()['Data'] + else: + return_data['Success'] = False + return_data['Message'] = r.json()['Message'] + return jsonify(return_data), 200 + except: + abort(500) + +@app.route('/api/hr/KQ035001', methods=['POST']) +# 人员出差申请 +def KQ035001(): + if not request.form or not 'EmpNo' in request.form.to_dict(): + abort(406) + post_data['FunID'] = 'KQ035001' + post_data['Data'] = request.form.to_dict() + post_data['Data']['Flag'] = post_data['Data']['Flag'][-1:] + try: + r = requests.post(hr_url,data=post_data.__str__().encode('utf-8')) + if r.json()['Success']: + return_data['Success'] = True + return_data['Message'] = r.json()['Data'] + else: + return_data['Success'] = False + return_data['Message'] = r.json()['Message'] + return jsonify(return_data), 200 + except: + abort(500) + +@app.route('/api/hr/KQ033001', methods=['POST']) +# 人员请假申请 +def KQ033001(): + if not request.form or not 'EmpNo' in request.form.to_dict(): + abort(400) + post_data['FunID'] = 'KQ033001' + try: + post_data['Data']['EmpNo'] = request.form.to_dict()['EmpNo'] + post_data['Data']['LeaveType'] = request.form.to_dict()['LeaveType'][-3:] + post_data['Data']['Flag'] = request.form.to_dict()['Flag'][-1:] + post_data['Data']['TimeRange'] = request.form.to_dict()['TimeRange'] + except (ValueError,KeyError) as e: + app.logger.error(e) + return_data['Success'] = False + return_data['Message'] = '表单填写出错,请重新填写!' + return jsonify(return_data), 200 + if 'OAID' in request.form.to_dict(): + try: + post_data['Data']['OAID'] = request.form.to_dict()['OAID'] + except (ValueError,KeyError) as e: + app.logger.error(e) + post_data['Data']['OAID'] = '' + try: + post_data['Data']['YYMMDD'] = strftime("%Y-%m-%d",strptime(request.form.to_dict()['YYMMDD'],"%a %b %d %H:%M:%S CST %Y")) + post_data['Data']['EndYYMMDD'] = strftime("%Y-%m-%d",strptime(request.form.to_dict()['EndYYMMDD'],"%a %b %d %H:%M:%S CST %Y")) + except (ValueError,KeyError) as e: + app.logger.error(e) + app.logger.error('YYMMDD和EndYYMMDD格式错误') + if 'BeginTime' in request.form.to_dict(): + try: + post_data['Data']['BeginTime'] = strftime("%H:%M",strptime(request.form.to_dict()['BeginTime'],"%a %b %d %H:%M:%S CST %Y")) + except (ValueError,KeyError) as e: + app.logger.error(e) + app.logger.error('BeginTime格式错误') + if 'EndTime' in request.form.to_dict(): + try: + post_data['Data']['EndTime'] = strftime("%H:%M",strptime(request.form.to_dict()['EndTime'],"%a %b %d %H:%M:%S CST %Y")) + except (ValueError,KeyError) as e: + app.logger.error(e) + app.logger.error('EndTime格式错误') + if 'LeaveWhy' in request.form.to_dict(): + try: + post_data['Data']['LeaveWhy'] = request.form.to_dict()['LeaveWhy'] + except (ValueError,KeyError) as e: + app.logger.error(e) + post_data['Data']['LeaveWhy'] = "" + if 'NormalTime' in request.form.to_dict(): + try: + form_data['NormalTime'] = request.form.to_dict()['NormalTime'] + except (ValueError,KeyError) as e: + app.logger.error(e) + form_data['EndTime'] = "0" + try: + r = requests.post(hr_url,data=post_data.__str__().encode('utf-8')) + if r.json()['Success']: + return_data['Success'] = True + return_data['Message'] = r.json()['Data'] + else: + return_data['Success'] = False + return_data['Message'] = r.json()['Message'] + return jsonify(return_data), 200 + except requests.exceptions.RequestException as e: + app.logger.error(e) + return_data['Success'] = False + return_data['Message'] = '接口出错' + return jsonify(return_data), 200 + +@app.route('/api/hr/CheckLeaveBillValidateForApp', methods=['POST']) +def CheckLeaveBillValidateForApp(): + if not request.form or not 'EmpNo' in request.form.to_dict(): + abort(405) + try: + form_data['EmpNo'] = request.form.to_dict()['EmpNo'] + form_data['LeaveType'] = request.form.to_dict()['LeaveType'] + form_data['Flag'] = request.form.to_dict()['Flag'] + form_data['TimeRange'] = request.form.to_dict()['TimeRange'] + except (ValueError,KeyError) as e: + app.logger.error(e) + return_data['Success'] = False + return_data['Message'] = '表单填写出错,请重新填写!' + return jsonify(return_data), 200 + try: + form_data['OAID'] = request.form.to_dict()['OAID'] + except (ValueError,KeyError) as e: + app.logger.error(e) + form_data['OAID'] = "" + try: + form_data['BeginDate'] = request.form.to_dict() + except (ValueError,KeyError) as e: + app.logger.error(e) + form_data['BeginDate'] = "" + try: + form_data['EndDate'] = request.form.to_dict()['EndDate'] + except (ValueError,KeyError) as e: + app.logger.error(e) + form_data['EndDate'] = "" + if 'BeginTime' in request.form.to_dict(): + try: + form_data['BeginTime'] = request.form.to_dict()['BeginTime'] + except (ValueError,KeyError) as e: + app.logger.error(e) + form_data['BeginTime'] = "" + if 'EndTime' in request.form.to_dict(): + try: + form_data['EndTime'] = request.form.to_dict()['EndTime'] + except (ValueError,KeyError) as e: + app.logger.error(e) + form_data['EndTime'] = "" + if 'NormalTime' in request.form.to_dict(): + try: + form_data['NormalTime'] = request.form.to_dict()['NormalTime'] + except (ValueError,KeyError) as e: + app.logger.error(e) + form_data['EndTime'] = "0" + try: + r = requests.get("http://10.1.0.50:18010/RESTService/CheckLeaveBillValidateForApp",params=form_data) + app.logger.info(form_data) + tree = ElementTree.fromstring(r.content) + if is_number(tree.text): + return_data['Success'] = True + return_data['Message'] = tree.text + else: + return_data['Success'] = False + return_data['Message'] = tree.text + return jsonify(return_data), 200 + except requests.exceptions.RequestException as e: + app.logger.error(e) + return_data['Success'] = False + return_data['Message'] = '接口出错' + return jsonify(return_data), 200 + +@app.route('/api/hr/RS061001', methods=['POST']) +# 人员离职申请 +def RS061001(): + if not request.form or not 'EmpNo' in request.form.to_dict(): + abort(406) + post_data['FunID'] = 'RS061001' + post_data['Data'] = request.form.to_dict() + try: + ReqRegDate = strptime(post_data['Data']['ReqRegDate'],"%a %b %d %H:%M:%S CST %Y") + post_data['Data']['ReqRegDate'] = strftime("%Y-%m-%d",ReqRegDate) + except: + app.logger.error('Request form do not have ReqRegDate') + try: + ReqLeaveDate = strptime(post_data['Data']['ReqLeaveDate'],"%a %b %d %H:%M:%S CST %Y") + post_data['Data']['ReqLeaveDate'] = strftime("%Y-%m-%d",ReqLeaveDate) + except: + app.logger.error('Request form do not have ReqLeaveDate') + try: + LeaveDate = strptime(post_data['Data']['LeaveDate'],"%a %b %d %H:%M:%S CST %Y") + post_data['Data']['LeaveDate'] = strftime("%Y-%m-%d",LeaveDate) + except: + app.logger.error('Request form do not have LeaveDate') + try: + r = requests.post(hr_url,data=post_data.__str__().encode('utf-8')) + if r.json()['Success']: + return_data['Success'] = True + return_data['Message'] = r.json()['Data'] + else: + return_data['Success'] = False + return_data['Message'] = r.json()['Message'] + return jsonify(return_data), 200 + except requests.exceptions.RequestException as e: + app.logger.error(e) + + + +if __name__ != '__main__': + gunicorn_logger = logging.getLogger('gunicorn.err') + app.logger.handlers = gunicorn_logger.handlers + app.logger.setLevel(gunicorn_logger.level) \ No newline at end of file