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.
 
 

300 line
11 KiB

  1. # -*- coding: utf-8 -*
  2. import logging
  3. from flask import Flask, jsonify, request, abort
  4. from time import strftime, strptime
  5. import requests
  6. from xml.etree import ElementTree
  7. def is_number(s):
  8. try:
  9. float(s)
  10. return True
  11. except ValueError:
  12. pass
  13. try:
  14. import unicodedata
  15. unicodedata.numeric(s)
  16. return True
  17. except (TypeError, ValueError):
  18. pass
  19. return False
  20. app = Flask(__name__)
  21. post_data = {"FunID":"",
  22. "Language":1,
  23. "Data":{}
  24. }
  25. form_data = {}
  26. hr_url = "http://10.1.0.50:18010/RESTService/SaveOrUpdate"
  27. return_data = {
  28. "Success":True,
  29. "Message":""
  30. }
  31. @app.route('/api/hr/RS031001', methods=['POST'])
  32. # 人员异动申请
  33. def RS031001():
  34. if not request.form or not 'EmpNo' in request.form.to_dict():
  35. abort(406)
  36. post_data['FunID'] = 'RS031001'
  37. post_data['Data'] = request.form.to_dict()
  38. try:
  39. YYMMDD = strptime(post_data['Data']['YYMMDD'],"%a %b %d %H:%M:%S CST %Y")
  40. post_data['Data']['YYMMDD'] = strftime("%Y-%m-%d",YYMMDD)
  41. except (ValueError,KeyError) as e:
  42. app.logger.error(e)
  43. try:
  44. AppForDate = strptime(post_data['Data']['AppForDate'],"%a %b %d %H:%M:%S CST %Y")
  45. post_data['Data']['AppForDate'] = strftime("%Y-%m-%d",AppForDate)
  46. except (ValueError,KeyError) as e:
  47. app.logger.error(e)
  48. try:
  49. TryuseDate = strptime(post_data['Data']['TryuseDate'],"%a %b %d %H:%M:%S CST %Y")
  50. post_data['Data']['TryuseDate'] = strftime("%Y-%m-%d",TryuseDate)
  51. except (ValueError,KeyError) as e:
  52. app.logger.error(e)
  53. try:
  54. r = requests.post(hr_url,data=post_data.__str__().encode('utf-8'))
  55. if r.json()['Success']:
  56. return_data['Success'] = True
  57. return_data['Message'] = r.json()['Data']
  58. else:
  59. return_data['Success'] = False
  60. return_data['Message'] = r.json()['Message']
  61. return jsonify(return_data), 200
  62. except requests.exceptions.RequestException as e:
  63. app.logger.error(e)
  64. return_data['Success'] = False
  65. return_data['Message'] = '接口出错!'
  66. return jsonify(return_data), 200
  67. @app.route('/api/hr/KQ061001', methods=['POST'])
  68. # 人员签卡申请
  69. def KQ061001():
  70. if not request.form or not 'EmpNo' in request.form.to_dict():
  71. abort(406)
  72. post_data['FunID'] = 'KQ061001'
  73. post_data['Data'] = request.form.to_dict()
  74. try:
  75. r = requests.post(hr_url,data=post_data.__str__().encode('utf-8'))
  76. if r.json()['Success']:
  77. return_data['Success'] = True
  78. return_data['Message'] = r.json()['Data']
  79. else:
  80. return_data['Success'] = False
  81. return_data['Message'] = r.json()['Message']
  82. return jsonify(return_data), 200
  83. except:
  84. abort(500)
  85. @app.route('/api/hr/KQ043001', methods=['POST'])
  86. # 个人加班申请
  87. def KQ043001():
  88. if not request.form or not 'EmpNo' in request.form.to_dict():
  89. abort(406)
  90. post_data['FunID'] = 'KQ043001'
  91. post_data['Data'] = request.form.to_dict()
  92. try:
  93. r = requests.post(hr_url,data=post_data.__str__().encode('utf-8'))
  94. if r.json()['Success']:
  95. return_data['Success'] = True
  96. return_data['Message'] = r.json()['Data']
  97. else:
  98. return_data['Success'] = False
  99. return_data['Message'] = r.json()['Message']
  100. return jsonify(return_data), 200
  101. except:
  102. abort(500)
  103. @app.route('/api/hr/KQ035001', methods=['POST'])
  104. # 人员出差申请
  105. def KQ035001():
  106. if not request.form or not 'EmpNo' in request.form.to_dict():
  107. abort(406)
  108. post_data['FunID'] = 'KQ035001'
  109. post_data['Data'] = request.form.to_dict()
  110. post_data['Data']['Flag'] = post_data['Data']['Flag'][-1:]
  111. try:
  112. r = requests.post(hr_url,data=post_data.__str__().encode('utf-8'))
  113. if r.json()['Success']:
  114. return_data['Success'] = True
  115. return_data['Message'] = r.json()['Data']
  116. else:
  117. return_data['Success'] = False
  118. return_data['Message'] = r.json()['Message']
  119. return jsonify(return_data), 200
  120. except:
  121. abort(500)
  122. @app.route('/api/hr/KQ033001', methods=['POST'])
  123. # 人员请假申请
  124. def KQ033001():
  125. if not request.form or not 'EmpNo' in request.form.to_dict():
  126. abort(400)
  127. post_data['FunID'] = 'KQ033001'
  128. try:
  129. post_data['Data']['EmpNo'] = request.form.to_dict()['EmpNo']
  130. post_data['Data']['LeaveType'] = request.form.to_dict()['LeaveType'][-3:]
  131. post_data['Data']['Flag'] = request.form.to_dict()['Flag'][-1:]
  132. post_data['Data']['TimeRange'] = request.form.to_dict()['TimeRange']
  133. except (ValueError,KeyError) as e:
  134. app.logger.error(e)
  135. return_data['Success'] = False
  136. return_data['Message'] = '表单填写出错,请重新填写!'
  137. return jsonify(return_data), 200
  138. if 'OAID' in request.form.to_dict():
  139. try:
  140. post_data['Data']['OAID'] = request.form.to_dict()['OAID']
  141. except (ValueError,KeyError) as e:
  142. app.logger.error(e)
  143. post_data['Data']['OAID'] = ''
  144. try:
  145. post_data['Data']['YYMMDD'] = strftime("%Y-%m-%d",strptime(request.form.to_dict()['YYMMDD'],"%a %b %d %H:%M:%S CST %Y"))
  146. post_data['Data']['EndYYMMDD'] = strftime("%Y-%m-%d",strptime(request.form.to_dict()['EndYYMMDD'],"%a %b %d %H:%M:%S CST %Y"))
  147. except (ValueError,KeyError) as e:
  148. app.logger.error(e)
  149. app.logger.error('YYMMDD和EndYYMMDD格式错误')
  150. if 'BeginTime' in request.form.to_dict():
  151. try:
  152. post_data['Data']['BeginTime'] = strftime("%H:%M",strptime(request.form.to_dict()['BeginTime'],"%a %b %d %H:%M:%S CST %Y"))
  153. except (ValueError,KeyError) as e:
  154. app.logger.error(e)
  155. app.logger.error('BeginTime格式错误')
  156. if 'EndTime' in request.form.to_dict():
  157. try:
  158. post_data['Data']['EndTime'] = strftime("%H:%M",strptime(request.form.to_dict()['EndTime'],"%a %b %d %H:%M:%S CST %Y"))
  159. except (ValueError,KeyError) as e:
  160. app.logger.error(e)
  161. app.logger.error('EndTime格式错误')
  162. if 'LeaveWhy' in request.form.to_dict():
  163. try:
  164. post_data['Data']['LeaveWhy'] = request.form.to_dict()['LeaveWhy']
  165. except (ValueError,KeyError) as e:
  166. app.logger.error(e)
  167. post_data['Data']['LeaveWhy'] = ""
  168. if 'NormalTime' in request.form.to_dict():
  169. try:
  170. form_data['NormalTime'] = request.form.to_dict()['NormalTime']
  171. except (ValueError,KeyError) as e:
  172. app.logger.error(e)
  173. form_data['EndTime'] = "0"
  174. try:
  175. r = requests.post(hr_url,data=post_data.__str__().encode('utf-8'))
  176. if r.json()['Success']:
  177. return_data['Success'] = True
  178. return_data['Message'] = r.json()['Data']
  179. else:
  180. return_data['Success'] = False
  181. return_data['Message'] = r.json()['Message']
  182. return jsonify(return_data), 200
  183. except requests.exceptions.RequestException as e:
  184. app.logger.error(e)
  185. return_data['Success'] = False
  186. return_data['Message'] = '接口出错'
  187. return jsonify(return_data), 200
  188. @app.route('/api/hr/CheckLeaveBillValidateForApp', methods=['POST'])
  189. def CheckLeaveBillValidateForApp():
  190. if not request.form or not 'EmpNo' in request.form.to_dict():
  191. abort(405)
  192. try:
  193. form_data['EmpNo'] = request.form.to_dict()['EmpNo']
  194. form_data['LeaveType'] = request.form.to_dict()['LeaveType']
  195. form_data['Flag'] = request.form.to_dict()['Flag']
  196. form_data['TimeRange'] = request.form.to_dict()['TimeRange']
  197. except (ValueError,KeyError) as e:
  198. app.logger.error(e)
  199. return_data['Success'] = False
  200. return_data['Message'] = '表单填写出错,请重新填写!'
  201. return jsonify(return_data), 200
  202. try:
  203. form_data['OAID'] = request.form.to_dict()['OAID']
  204. except (ValueError,KeyError) as e:
  205. app.logger.error(e)
  206. form_data['OAID'] = ""
  207. try:
  208. form_data['BeginDate'] = request.form.to_dict()
  209. except (ValueError,KeyError) as e:
  210. app.logger.error(e)
  211. form_data['BeginDate'] = ""
  212. try:
  213. form_data['EndDate'] = request.form.to_dict()['EndDate']
  214. except (ValueError,KeyError) as e:
  215. app.logger.error(e)
  216. form_data['EndDate'] = ""
  217. if 'BeginTime' in request.form.to_dict():
  218. try:
  219. form_data['BeginTime'] = request.form.to_dict()['BeginTime']
  220. except (ValueError,KeyError) as e:
  221. app.logger.error(e)
  222. form_data['BeginTime'] = ""
  223. if 'EndTime' in request.form.to_dict():
  224. try:
  225. form_data['EndTime'] = request.form.to_dict()['EndTime']
  226. except (ValueError,KeyError) as e:
  227. app.logger.error(e)
  228. form_data['EndTime'] = ""
  229. if 'NormalTime' in request.form.to_dict():
  230. try:
  231. form_data['NormalTime'] = request.form.to_dict()['NormalTime']
  232. except (ValueError,KeyError) as e:
  233. app.logger.error(e)
  234. form_data['EndTime'] = "0"
  235. try:
  236. r = requests.get("http://10.1.0.50:18010/RESTService/CheckLeaveBillValidateForApp",params=form_data)
  237. app.logger.info(form_data)
  238. tree = ElementTree.fromstring(r.content)
  239. if is_number(tree.text):
  240. return_data['Success'] = True
  241. return_data['Message'] = tree.text
  242. else:
  243. return_data['Success'] = False
  244. return_data['Message'] = tree.text
  245. return jsonify(return_data), 200
  246. except requests.exceptions.RequestException as e:
  247. app.logger.error(e)
  248. return_data['Success'] = False
  249. return_data['Message'] = '接口出错'
  250. return jsonify(return_data), 200
  251. @app.route('/api/hr/RS061001', methods=['POST'])
  252. # 人员离职申请
  253. def RS061001():
  254. if not request.form or not 'EmpNo' in request.form.to_dict():
  255. abort(406)
  256. post_data['FunID'] = 'RS061001'
  257. post_data['Data'] = request.form.to_dict()
  258. try:
  259. ReqRegDate = strptime(post_data['Data']['ReqRegDate'],"%a %b %d %H:%M:%S CST %Y")
  260. post_data['Data']['ReqRegDate'] = strftime("%Y-%m-%d",ReqRegDate)
  261. except:
  262. app.logger.error('Request form do not have ReqRegDate')
  263. try:
  264. ReqLeaveDate = strptime(post_data['Data']['ReqLeaveDate'],"%a %b %d %H:%M:%S CST %Y")
  265. post_data['Data']['ReqLeaveDate'] = strftime("%Y-%m-%d",ReqLeaveDate)
  266. except:
  267. app.logger.error('Request form do not have ReqLeaveDate')
  268. try:
  269. LeaveDate = strptime(post_data['Data']['LeaveDate'],"%a %b %d %H:%M:%S CST %Y")
  270. post_data['Data']['LeaveDate'] = strftime("%Y-%m-%d",LeaveDate)
  271. except:
  272. app.logger.error('Request form do not have LeaveDate')
  273. try:
  274. r = requests.post(hr_url,data=post_data.__str__().encode('utf-8'))
  275. if r.json()['Success']:
  276. return_data['Success'] = True
  277. return_data['Message'] = r.json()['Data']
  278. else:
  279. return_data['Success'] = False
  280. return_data['Message'] = r.json()['Message']
  281. return jsonify(return_data), 200
  282. except requests.exceptions.RequestException as e:
  283. app.logger.error(e)
  284. if __name__ != '__main__':
  285. gunicorn_logger = logging.getLogger('gunicorn.err')
  286. app.logger.handlers = gunicorn_logger.handlers
  287. app.logger.setLevel(gunicorn_logger.level)