暫無描述
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.

line_notify.py 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. import requests
  2. import pyodbc
  3. import time
  4. import datetime
  5. from googletrans import Translator
  6. def lineNotifyMessage(token, msg):
  7. headers = {
  8. "Authorization": "Bearer " + token,
  9. "Content-Type" : "application/x-www-form-urlencoded"
  10. }
  11. payload = {'message': msg }
  12. r = requests.post("https://notify-api.line.me/api/notify", headers = headers, params = payload)
  13. return r.status_code
  14. if __name__ == "__main__":
  15. username = 'B70340'
  16. password = 'Lee0911274990'
  17. translator = Translator(service_urls=['translate.googleapis.com'])
  18. while True:
  19. respon = ""
  20. respon2 = ""
  21. now = datetime.datetime.now()
  22. nhour = now.hour
  23. nmin = now.minute
  24. print("現在時間:"+str(now.year).zfill(4)+"-"+str(now.month).zfill(2)+"-"+str(now.day).zfill(2)+"-"+str(now.hour).zfill(2)+":"+str(now.minute).zfill(2))
  25. try:
  26. database = 'GA-000'
  27. server = '106.1.49.218'
  28. cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
  29. connect = cnxn.cursor()
  30. connect.execute("SELECT * from dbo.HXBOT_Test WHERE (發送時間_時='"+str(now.hour).zfill(2)+"' AND 發送時間_分='"+str(now.minute).zfill(2)+"');")
  31. row = connect.fetchall()
  32. #print(row)
  33. #print(len(row))
  34. if len(row) == 0:
  35. print("未有發送對象")
  36. elif len(row) != 0:
  37. connect.close()
  38. cnxn.close()
  39. server = '103.231.201.230,2433'
  40. database = 'HX-PGS-MSN'
  41. cnxn1 = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
  42. connect1 = cnxn1.cursor()
  43. #============部門聯絡函未審核數量=============
  44. sql="SELECT 申請部門,COUNT(聯絡函單號) AS 未審核數量 FROM 部門聯絡函 WHERE (主題 NOT LIKE N'') AND (聯絡事項 NOT LIKE N'') AND (審核人 LIKE N'') AND (審核人 NOT LIKE N'作廢%') AND (申請部門 NOT LIKE '0%')GROUP BY 申請部門"
  45. connect1.execute(sql)
  46. resarr = connect1.fetchall() #部門聯絡函未審核數量
  47. if len(resarr) != 0:
  48. re1 = 0
  49. respon += "=================\n"
  50. respon += "一、部門聯絡函未審核數量\n"
  51. while re1 != len(resarr):
  52. if re1 >= 1 :
  53. respon += "-----------------\n"
  54. res1_group = resarr[re1][0]
  55. res1_item = resarr[re1][1]
  56. respon = respon +"申請部門:"+str(res1_group)+"\n未審核數量:"+str(res1_item)+"\n"
  57. re1 += 1
  58. else:
  59. print("部門聯絡函未審核數量為0")
  60. #===========================================
  61. #=============部門聯絡函未收件數量===========
  62. sql="SELECT 聯絡部門,聯絡人,COUNT(聯絡函單號) AS 未收件數量 FROM 部門聯絡函 WHERE (主題 NOT LIKE N'') AND (聯絡事項 NOT LIKE N'') AND (審核人 NOT LIKE N'') AND (審核人 NOT LIKE N'作廢%') AND (接收核准 LIKE N'') AND (接收核准 NOT LIKE N'作廢%')GROUP BY 聯絡部門,聯絡人"
  63. connect1.execute(sql)
  64. resarr = connect1.fetchall()
  65. if len(resarr) != 0:
  66. re1 = 0
  67. respon += "=================\n"
  68. respon += "二、部門聯絡函未收件數量\n"
  69. while re1 != len(resarr):
  70. if re1 >= 1 :
  71. respon += "-----------------\n"
  72. res1_group = resarr[re1][0]
  73. res1_person = resarr[re1][1]
  74. res1_item = resarr[re1][2]
  75. respon = respon +"聯絡部門:"+str(res1_group)+"\n聯絡人:"+str(res1_person)+"\n未審核數量:"+str(res1_item)+"\n"
  76. re1 += 1
  77. else:
  78. print("部門聯絡函未收件數量為0")
  79. #===========================================
  80. #=============部門聯絡函未執行數量===========
  81. sql="SELECT 執行部門,執行人,COUNT(聯絡函單號) AS 未執行數量 FROM 部門聯絡函 WHERE (主題 NOT LIKE N'') AND (聯絡事項 NOT LIKE N'') AND (審核人 NOT LIKE N'') AND (審核人 NOT LIKE N'作廢%') AND (接收核准 NOT LIKE N'') AND (接收核准 NOT LIKE N'作廢%') AND (已作業 = 0) GROUP BY 執行人,執行部門"
  82. connect1.execute(sql)
  83. resarr = connect1.fetchall()
  84. if len(resarr) != 0:
  85. re1 = 0
  86. respon += "=================\n"
  87. respon += "三、部門聯絡函未執行數量\n"
  88. while re1 != len(resarr):
  89. if re1 >= 1 :
  90. respon += "-----------------\n"
  91. res1_group = resarr[re1][0]
  92. res1_person = resarr[re1][1]
  93. res1_item = resarr[re1][2]
  94. respon = respon +"執行部門:"+str(res1_group)+"\n執行人:"+str(res1_person)+"\n未執行數量:"+str(res1_item)+"\n"
  95. re1 += 1
  96. else:
  97. print("部門聯絡函未執行數量為0")
  98. #===========================================
  99. #=============部門聯絡函未驗收數量===========
  100. sql="SELECT 申請部門,COUNT(聯絡函單號) AS 未驗收數量 FROM 部門聯絡函 WHERE (主題 NOT LIKE N'') AND (聯絡事項 NOT LIKE N'') AND (審核人 NOT LIKE N'') AND (審核人 NOT LIKE N'作廢%') AND (接收核准 NOT LIKE N'') AND (接收核准 NOT LIKE N'作廢%') AND (已作業 = 1) AND (已驗收 = 0) GROUP BY 申請部門"
  101. connect1.execute(sql)
  102. resarr = connect1.fetchall()
  103. if len(resarr) != 0:
  104. re1 = 0
  105. respon += "=================\n"
  106. respon += "四、部門聯絡函未驗收數量\n"
  107. while re1 != len(resarr):
  108. if re1 >= 1 :
  109. respon += "-----------------\n"
  110. res1_group = resarr[re1][0]
  111. res1_item = resarr[re1][1]
  112. respon = respon +"申請部門:"+str(res1_group)+"\n未驗收數量:"+str(res1_item)+"\n"
  113. re1 += 1
  114. else:
  115. print("部門聯絡函未驗收數量為0")
  116. #===========================================
  117. connect1.close()
  118. cnxn1.close()
  119. if respon != "":
  120. x=0
  121. while x != len(row):
  122. print("發送對象:"+str(row[x][0]))
  123. token = str(row[x][1])
  124. message = "\n================="
  125. message += "\n現在時間:"+str(now.year).zfill(4)+"-"+str(now.month).zfill(2)+"-"+str(now.day).zfill(2)+"-"+str(now.hour).zfill(2)+":"+str(now.minute).zfill(2) +"(UTC+08)\n"
  126. lineNotifyMessage(token, message+respon)
  127. result=translator.translate(message+respon,dest='id').text
  128. lineNotifyMessage(token, "\n"+result)
  129. x += 1
  130. database = 'HX-GPS-ERP-SYS'
  131. server = '103.231.201.230,2433'
  132. cnxn2 = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
  133. connect2 = cnxn2.cursor()
  134. #============未建立進度表的工程數量=============
  135. sql="SELECT 合約控制表.工程主管, COUNT(合約控制表.合約編號) AS 未建立進度表數量 FROM 合約控制表 FULL OUTER JOIN (SELECT [PROJECT-SYS].dbo.工程進度表.合約編號, [PROJECT-SYS].dbo.工程責任表.項目負責 FROM [PROJECT-SYS].dbo.工程進度表 INNER JOIN [PROJECT-SYS].dbo.工程責任表 ON [PROJECT-SYS].dbo.工程進度表.合約編號 = [PROJECT-SYS].dbo.工程責任表.合約編號 GROUP BY [PROJECT-SYS].dbo.工程進度表.合約編號, [PROJECT-SYS].dbo.工程責任表.項目負責) AS QQ ON 合約控制表.合約編號 = QQ.合約編號 WHERE (合約控制表.合約停止 = 0) AND (合約控制表.驗收結果 = 0 OR 合約控制表.驗收結果 IS NULL) AND (QQ.項目負責 IS NULL) GROUP BY 合約控制表.工程主管"
  136. connect2.execute(sql)
  137. resarr = connect2.fetchall() #未建立進度表的工程數量
  138. if len(resarr) != 0:
  139. re1 = 0
  140. respon2 += "=================\n"
  141. respon2 += "一、未建立進度表的工程數量\n"
  142. while re1 != len(resarr):
  143. if re1 >= 1 :
  144. respon2 += "-----------------\n"
  145. res1_group = resarr[re1][0]
  146. res1_item = resarr[re1][1]
  147. respon2 = respon2 +"工程主管:"+str(res1_group)+"\n未建立進度表數量:"+str(res1_item)+"\n"
  148. re1 += 1
  149. else:
  150. print("未建立進度表的工程數量為0")
  151. #===========================================
  152. #============工程未驗收數量=============
  153. sql="SELECT 工程主管, COUNT(合約編號) AS 工程未驗收數量 FROM 合約控制表 WHERE (合約停止 = 0) AND (驗收結果 = 0 OR 驗收結果 IS NULL) GROUP BY 工程主管"
  154. connect2.execute(sql)
  155. resarr = connect2.fetchall() #工程未驗收數量
  156. if len(resarr) != 0:
  157. re1 = 0
  158. respon2 += "=================\n"
  159. respon2 += "二、工程未驗收數量\n"
  160. while re1 != len(resarr):
  161. if re1 >= 1 :
  162. respon2 += "-----------------\n"
  163. res1_group = resarr[re1][0]
  164. res1_item = resarr[re1][1]
  165. respon2 = respon2 +"工程主管:"+str(res1_group)+"\n工程未驗收數量:"+str(res1_item)+"\n"
  166. re1 += 1
  167. else:
  168. print("工程未驗收數量為0")
  169. #===========================================
  170. connect2.close()
  171. cnxn2.close()
  172. if respon2 != "":
  173. x=0
  174. while x != len(row):
  175. print("發送對象:"+str(row[x][0]))
  176. token = str(row[x][1])
  177. message = "\n================="
  178. message += "\n現在時間:"+str(now.year).zfill(4)+"-"+str(now.month).zfill(2)+"-"+str(now.day).zfill(2)+"-"+str(now.hour).zfill(2)+":"+str(now.minute).zfill(2) +"(UTC+08)\n"
  179. lineNotifyMessage(token, message+respon2)
  180. result=translator.translate(message+respon2,dest='id').text
  181. lineNotifyMessage(token, "\n"+result)
  182. x += 1
  183. except:
  184. print('error')
  185. print('發送完畢')
  186. time.sleep(60)