# -*- 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("人员异动申请") 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("人员异动申请") 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("人员异动申请") 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("人员异动申请") 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/KQ061001v2', methods=['POST']) # 人员签卡申请 def KQ061001v2(): post_data['FunID'] = 'KQ061001' post_data['Data'] = request.form.to_dict() try: post_data['Data']['EmpNo'] = request.form.to_dict()['EmpNo'] post_data['Data']['YYMMDD'] = strftime("%Y-%m-%d",strptime(request.form.to_dict()['UncheckedDate'],"%a %b %d %H:%M:%S CST %Y")) post_data['Data']['SignTime'] = strftime("%H:%M",strptime(request.form.to_dict()['UncheckedTime'],"%a %b %d %H:%M:%S CST %Y")) post_data['Data']['SignTypeNo'] = request.form.to_dict()['SignTypeNo'] post_data['Data']['OAID'] = request.form.to_dict()['OAID'] post_data['Data']['SignWhy'] = request.form.to_dict()['SignWhy'] post_data['Data']['Remark'] = request.form.to_dict()['Remark'] post_data['Data']['HasConfirmed'] = request.form.to_dict()['HasConfirmed'] except (ValueError,KeyError) as e: app.logger.error("人员签卡申请") app.logger.error(e) return_data['Success'] = False return_data['Message'] = '表单填写出错,请重新填写!' return jsonify(return_data), 200 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("人员签卡申请") app.logger.error(e) return_data['Success'] = False return_data['Message'] = '接口出错!' return jsonify(return_data), 200 @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/KQ043001v2', methods=['POST']) # 个人加班申请 def KQ043001v2(): post_data['FunID'] = 'KQ043001' post_data['Data'] = request.form.to_dict() try: post_data['Data']['EmpNo'] = request.form.to_dict()['EmpNo'] post_data['Data']['YYMMDD'] = strftime("%Y-%m-%d",strptime(request.form.to_dict()['overTimeStart'],"%a %b %d %H:%M:%S CST %Y")) post_data['Data']['BeginTime'] = strftime("%H:%M",strptime(request.form.to_dict()['overTimeStart'],"%a %b %d %H:%M:%S CST %Y")) post_data['Data']['EndTime'] = strftime("%H:%M",strptime(request.form.to_dict()['overTimeEnd'],"%a %b %d %H:%M:%S CST %Y")) post_data['Data']['ReqOverTime'] = request.form.to_dict()['ReqOverTime'] post_data['Data']['ReqWhyNo'] = request.form.to_dict()['ReqWhyNo'] post_data['Data']['IsReplace'] = request.form.to_dict()['IsReplace'] post_data['Data']['HasConfirmed'] = request.form.to_dict()['HasConfirmed'] post_data['Data']['CalcType'] = request.form.to_dict()['CalcType'] post_data['Data']['IsReCalcHours'] = request.form.to_dict()['IsReCalcHours'] post_data['Data']['OAID'] = request.form.to_dict()['OAID'] except (ValueError,KeyError) as e: app.logger.error("个人加班申请") app.logger.error(e) return_data['Success'] = False return_data['Message'] = '表单填写出错,请重新填写!' return jsonify(return_data), 200 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("个人加班申请") app.logger.error(e) return_data['Success'] = False return_data['Message'] = '接口出错!' return jsonify(return_data), 200 @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)