浏览代码

fix:有色

Roc 1 年之前
父节点
当前提交
9287f36e18
共有 1 个文件被更改,包括 183 次插入0 次删除
  1. 183 0
      rpa_smm_refresh.py

+ 183 - 0
rpa_smm_refresh.py

@@ -0,0 +1,183 @@
+import hug
+from bottle import route, run
+import pyautogui
+import random
+import time
+import os
+import pythoncom
+import win32gui, win32con, win32process
+import pyperclip
+# import psutil
+import urllib.parse
+import autoit
+import datetime
+# import subprocess
+
+hug.API(__name__).http.output_format = hug.output_format.json
+
+exePath = r"C:\Program Files (x86)\Kingsoft\WPS Office\11.8.2.12085\office6\et"
+
+@hug.get('/smm_chemical/server')
+def smm_server():
+    return 1
+
+# 顶部有色按钮的x,y位置
+smm_button_x = 897
+smm_button_y = 53
+
+# 中间更新数据下拉框按钮的x,y位置
+smm_refresh_select_button_x = 212
+smm_refresh_select_button_y = 119
+
+# 中间更新数据按钮的x,y位置
+smm_refresh_button_x = 232
+smm_refresh_button_y = 178
+
+# 超时时间,默认15s
+timeout_time = 15
+
+@hug.get('/smm_chemical/refresh')
+def smm_refresh(file_path):
+    screen_width, screen_height = pyautogui.size()
+    print("当前时间:{};当前屏幕分辨率:{} x {}".format(datetime.datetime.now(), screen_width, screen_height))
+
+    pyautogui.FAILSAFE = False
+
+    file_path = file_path.replace('"', '')
+
+    # 显示桌面
+    pyautogui.hotkey('win', 'd')
+
+    try:
+        file_path = urllib.parse.unquote(file_path)
+        fileFullPath = file_path
+
+        # print("full_path start")
+        fileFullPath = fileFullPath.replace("\\\\", "\\")
+
+        print("文件路径:", fileFullPath)
+
+        if not os.path.exists(fileFullPath):
+            print("文件不存在")
+            return
+
+        if os.path.exists(fileFullPath) and ".xlsx" in fileFullPath \
+                and fileFullPath.find("~$") < 0 \
+                and fileFullPath.find("template") < 0:
+
+            # 获取文件名和扩展名
+            file_name, file_ext = os.path.splitext(os.path.basename(fileFullPath))
+            file_name_ext = file_name + file_ext
+            # print(file_name_ext)
+
+            try:
+
+                # 启动程序
+                code = exePath + " " + fileFullPath
+                # print(code)
+                autoit.run(code)
+                autoit.win_wait_active(file_name_ext, timeout=20)  # 等待窗口激活
+                autoit.win_move(file_name_ext, 0, 0, 1024, 768)
+                # autoit.win_move(file_name_ext, 0, 0, 1920, 1080)
+
+                # print("监听成功了")
+
+            except Exception as e:
+                print("监听", fileFullPath, "失败:", e)
+
+                ## 失败的话,截图记录下原因
+                screenshot = pyautogui.screenshot()
+                imgPath = datetime.datetime.now().strftime("%Y%m%d%H%M%S")+"_screenshot_img.png"
+                screenshot.save(imgPath)
+
+                hwnd = win32gui.GetForegroundWindow()
+                found_title = win32gui.GetWindowText(hwnd)
+                print("当前窗口名称:", found_title)
+                if found_title == "":
+                    print("窗口未打开")
+                    return
+                if found_title.startswith(file_name_ext) == False:
+                    print("当前窗口与excel不一致,当前窗口:", found_title, ";excel:", file_name_ext)
+                    return
+                autoit.win_move_by_handle(hwnd, 0, 0, 1024, 768)
+                # autoit.win_move_by_handle(hwnd, 0, 0, 1920, 1080)
+
+            # 等待自动刷新结束
+            time.sleep(15)
+
+            # 保存
+            pyautogui.hotkey('ctrl', 's')
+            time.sleep(1)
+
+            # 关闭当前excel
+            pyautogui.hotkey('ctrl', 'w')
+
+            return True
+
+            # 屏幕最大化
+            hwnd = win32gui.GetForegroundWindow()
+            win32gui.ShowWindow(hwnd, win32con.SW_MAXIMIZE)
+            time.sleep(1)
+
+            # 随机2-3次点击 单元格区域
+            r = random.randint(2, 3)
+            for i in range(r):
+                point_x = random.randint(511, 1745)
+                point_y = random.randint(282, 791)
+                print("随机点击", i + 1, "下")
+                pyautogui.moveTo(point_x, point_y, 0.5)
+                pyautogui.click()
+
+            # 随机停留几秒
+            r = random.randint(1, 2)
+            time.sleep(r)
+
+            # 点击 SMM DATA PRO 按钮
+            # point_x = 541
+            # point_y = 63
+            pyautogui.moveTo(smm_button_x, smm_button_y, 0.5)
+            pyautogui.click()
+            time.sleep(1)
+
+            # 点击 刷新下拉框 按钮
+            # point_x = 210
+            # point_y = 142
+            pyautogui.moveTo(smm_refresh_select_button_x, smm_refresh_select_button_y, 0.5)
+            pyautogui.click()
+            time.sleep(1)
+
+            # 点击 全部工作表 按钮
+            print("开始刷新了")
+            # point_x = 240
+            # point_y = 233
+            pyautogui.moveTo(smm_refresh_button_x, smm_refresh_button_y, 0.5)
+            pyautogui.click()
+            time.sleep(0.5)
+
+            # 点击完刷新按钮后,移开鼠标
+            pyautogui.moveTo(622, 300, 0.5)
+
+            # 等待刷新结束
+            time.sleep(10)
+
+            # 保存
+            pyautogui.hotkey('ctrl', 's')
+            time.sleep(1)
+
+            # 关闭当前excel
+            pyautogui.hotkey('ctrl', 'w')
+
+            return True
+        else:
+            print("ext err:" + fileFullPath)
+
+        return True
+    except Exception as e:
+        print("Exception:")
+        print(str(e))
+        return False
+
+
+if __name__ == "__main__":
+    app = __hug__.http.server()
+    run(app=app, reloader=True, port=7007)