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.

78 lines
3.1 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. import bot_app.fulfillment.utility as util
  2. def init_app(app):
  3. pass
  4. #表列rs
  5. def list_rs(fulfillment):
  6. office_code = fulfillment.get('queryResult').get('parameters').get('office_code')
  7. strsql = '''
  8. select a.rs_url,
  9. a.is_internet,
  10. decode(b.is_active, 0, 'Active', 'InActive') as status
  11. from was5005 a, was5011 b
  12. where a.office_code = :office_code
  13. and a.rs_id = b.rs_id
  14. '''
  15. with util.get_db_conn() as conn:
  16. res = conn.execute(strsql,office_code=office_code)
  17. res = res.fetchall()
  18. if len(res) == 0:
  19. strRes = '無法取得Office: ' + office_code + 'Report Server資訊,請重新查詢!'
  20. return reset_context(fulfillmentObj=fulfillment,text_content=strRes)
  21. else:
  22. strRes = 'Office: ' + office_code + " Report Server資訊如下:\n" + ', '.join(row[0] for row in res)
  23. return util.simple_response(text_content=strRes)
  24. #取得rs資訊
  25. def get_rs_info(fulfillment):
  26. office_code = fulfillment.get('queryResult').get('parameters').get('office_code')
  27. rs_code = fulfillment.get('queryResult').get('parameters').get('rs_code')
  28. rs_url = rs_code.upper() + '.WANHAI.COM:80%'
  29. strsql='''select a.office_code,a.rs_url,a.is_internet,decode(b.is_active,0,'Active','InActive') as status from was5005 a,was5011 b
  30. where a.rs_id=b.rs_id and upper(a.rs_url) like :rs_url and office_code like :office_code
  31. '''
  32. if office_code:
  33. office_code +='%'
  34. else:
  35. office_code='%'
  36. with util.get_db_conn() as conn:
  37. res = conn.execute(strsql,rs_url=rs_url,office_code=office_code)
  38. res = res.fetchall()
  39. if len(res) == 0:
  40. strRes = '無法取得' + rs_code + '資訊,請重新查詢!'
  41. return reset_context(fulfillmentObj=fulfillment,text_content=strRes)
  42. else:
  43. strRes = rs_code +'資訊如下:\n'
  44. for row in res:
  45. strRes += row[1]+'(office: ' + row[0] + ', isInternet: '+row[2]+', Status: ' + row[3] + ') '
  46. return util.simple_response(text_content=strRes)
  47. #開啟/關閉rs
  48. def switch_on_off(fulfillment):
  49. office_code = fulfillment.get('queryResult').get('parameters').get('office_code')
  50. switch_action = fulfillment.get('queryResult').get('parameters').get('switch_action')
  51. rs_code = fulfillment.get('queryResult').get('parameters').get('rs_code')
  52. rs_url = rs_code.upper() + '.WANHAI.COM:80'
  53. action_code = '0' if switch_action=='on' else '1'
  54. strsql = '''update was5011 set is_active=:action_code where rs_id in (select rs_id from was5005 where office_code=:office_code and upper(rs_url)=:rs_url)'''
  55. with util.get_db_conn() as conn:
  56. res = conn.execute(strsql,action_code=action_code,office_code=office_code,rs_url=rs_url)
  57. print(res)
  58. strRes = rs_code + '' + ('開啟' if switch_action=='on' else '關閉')
  59. return util.simple_response(text_content=strRes)
  60. def reset_context(fulfillmentObj,text_content):
  61. return util.simple_response(fulfillmentObj={
  62. "fulfillmentText": text_content,
  63. "outputContexts":util.reset_all_contexts(fulfillmentObj=fulfillmentObj).get('queryResult').get('outputContexts')
  64. })