import requests import pyodbc import time import datetime from googletrans import Translator def lineNotifyMessage(token, msg): headers = { "Authorization": "Bearer " + token, "Content-Type" : "application/x-www-form-urlencoded" } payload = {'message': msg } r = requests.post("https://notify-api.line.me/api/notify", headers = headers, params = payload) return r.status_code if __name__ == "__main__": username = 'B70340' password = 'Lee0911274990' translator = Translator(service_urls=['translate.googleapis.com']) while True: respon = "" respon2 = "" now = datetime.datetime.now() nhour = now.hour nmin = now.minute 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)) try: database = 'GA-000' server = '106.1.49.218' cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password) connect = cnxn.cursor() connect.execute("SELECT * from dbo.HXBOT_Test WHERE (發送時間_時='"+str(now.hour).zfill(2)+"' AND 發送時間_分='"+str(now.minute).zfill(2)+"');") row = connect.fetchall() #print(row) #print(len(row)) if len(row) == 0: print("未有發送對象") elif len(row) != 0: connect.close() cnxn.close() server = '103.231.201.230,2433' database = 'HX-PGS-MSN' cnxn1 = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password) connect1 = cnxn1.cursor() #============部門聯絡函未審核數量============= 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 申請部門" connect1.execute(sql) resarr = connect1.fetchall() #部門聯絡函未審核數量 if len(resarr) != 0: re1 = 0 respon += "=================\n" respon += "一、部門聯絡函未審核數量\n" while re1 != len(resarr): if re1 >= 1 : respon += "-----------------\n" res1_group = resarr[re1][0] res1_item = resarr[re1][1] respon = respon +"申請部門:"+str(res1_group)+"\n未審核數量:"+str(res1_item)+"\n" re1 += 1 else: print("部門聯絡函未審核數量為0") #=========================================== #=============部門聯絡函未收件數量=========== 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 聯絡部門,聯絡人" connect1.execute(sql) resarr = connect1.fetchall() if len(resarr) != 0: re1 = 0 respon += "=================\n" respon += "二、部門聯絡函未收件數量\n" while re1 != len(resarr): if re1 >= 1 : respon += "-----------------\n" res1_group = resarr[re1][0] res1_person = resarr[re1][1] res1_item = resarr[re1][2] respon = respon +"聯絡部門:"+str(res1_group)+"\n聯絡人:"+str(res1_person)+"\n未審核數量:"+str(res1_item)+"\n" re1 += 1 else: print("部門聯絡函未收件數量為0") #=========================================== #=============部門聯絡函未執行數量=========== 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 執行人,執行部門" connect1.execute(sql) resarr = connect1.fetchall() if len(resarr) != 0: re1 = 0 respon += "=================\n" respon += "三、部門聯絡函未執行數量\n" while re1 != len(resarr): if re1 >= 1 : respon += "-----------------\n" res1_group = resarr[re1][0] res1_person = resarr[re1][1] res1_item = resarr[re1][2] respon = respon +"執行部門:"+str(res1_group)+"\n執行人:"+str(res1_person)+"\n未執行數量:"+str(res1_item)+"\n" re1 += 1 else: print("部門聯絡函未執行數量為0") #=========================================== #=============部門聯絡函未驗收數量=========== 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 申請部門" connect1.execute(sql) resarr = connect1.fetchall() if len(resarr) != 0: re1 = 0 respon += "=================\n" respon += "四、部門聯絡函未驗收數量\n" while re1 != len(resarr): if re1 >= 1 : respon += "-----------------\n" res1_group = resarr[re1][0] res1_item = resarr[re1][1] respon = respon +"申請部門:"+str(res1_group)+"\n未驗收數量:"+str(res1_item)+"\n" re1 += 1 else: print("部門聯絡函未驗收數量為0") #=========================================== connect1.close() cnxn1.close() if respon != "": x=0 while x != len(row): print("發送對象:"+str(row[x][0])) token = str(row[x][1]) message = "\n=================" 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" lineNotifyMessage(token, message+respon) result=translator.translate(message+respon,dest='id').text lineNotifyMessage(token, "\n"+result) x += 1 database = 'HX-GPS-ERP-SYS' server = '103.231.201.230,2433' cnxn2 = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password) connect2 = cnxn2.cursor() #============未建立進度表的工程數量============= 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 合約控制表.工程主管" connect2.execute(sql) resarr = connect2.fetchall() #未建立進度表的工程數量 if len(resarr) != 0: re1 = 0 respon2 += "=================\n" respon2 += "一、未建立進度表的工程數量\n" while re1 != len(resarr): if re1 >= 1 : respon2 += "-----------------\n" res1_group = resarr[re1][0] res1_item = resarr[re1][1] respon2 = respon2 +"工程主管:"+str(res1_group)+"\n未建立進度表數量:"+str(res1_item)+"\n" re1 += 1 else: print("未建立進度表的工程數量為0") #=========================================== #============工程未驗收數量============= sql="SELECT 工程主管, COUNT(合約編號) AS 工程未驗收數量 FROM 合約控制表 WHERE (合約停止 = 0) AND (驗收結果 = 0 OR 驗收結果 IS NULL) GROUP BY 工程主管" connect2.execute(sql) resarr = connect2.fetchall() #工程未驗收數量 if len(resarr) != 0: re1 = 0 respon2 += "=================\n" respon2 += "二、工程未驗收數量\n" while re1 != len(resarr): if re1 >= 1 : respon2 += "-----------------\n" res1_group = resarr[re1][0] res1_item = resarr[re1][1] respon2 = respon2 +"工程主管:"+str(res1_group)+"\n工程未驗收數量:"+str(res1_item)+"\n" re1 += 1 else: print("工程未驗收數量為0") #=========================================== connect2.close() cnxn2.close() if respon2 != "": x=0 while x != len(row): print("發送對象:"+str(row[x][0])) token = str(row[x][1]) message = "\n=================" 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" lineNotifyMessage(token, message+respon2) result=translator.translate(message+respon2,dest='id').text lineNotifyMessage(token, "\n"+result) x += 1 except: print('error') print('發送完畢') time.sleep(60)