From ae779d7d006f8f6023029f0aeb4418688f91d35d Mon Sep 17 00:00:00 2001 From: dongchangxi <458593490@qq.com> Date: Mon, 16 Oct 2023 15:07:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=B1=E6=A3=9A=E4=B8=8E=E5=9C=B0=E8=B4=B4?= =?UTF-8?q?=E7=9A=84=E5=85=B3=E8=81=94=20=E5=92=8C=20=E8=B5=B0=E6=96=B0?= =?UTF-8?q?=E5=BB=BA=E6=A8=A1=E7=B3=BB=E7=BB=9F=20=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E6=9D=A5=E8=BF=9E=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/config.py | 1 - libs/libs.py | 4 +-- libs/libs_db.py | 82 ++++++++++++++++++++++++++++-------------- main_step1.py | 4 +-- test.py | 3 +- tools/auto_distance.py | 2 +- tools/gen_xmps.py | 2 +- 7 files changed, 63 insertions(+), 35 deletions(-) diff --git a/libs/config.py b/libs/config.py index 6c208bb..a61142b 100644 --- a/libs/config.py +++ b/libs/config.py @@ -83,7 +83,6 @@ ps_floor_sticker = { "29" : floor_sticker_distances['v1'], "44" : floor_sticker_distances['v2'], "54" : floor_sticker_distances['v2'], - "63" : floor_sticker_distances['v2'], "77" : floor_sticker_distances['v2'], "79" : floor_sticker_distances['v2'], "80" : floor_sticker_distances['v2'], diff --git a/libs/libs.py b/libs/libs.py index 8356541..1c3a024 100644 --- a/libs/libs.py +++ b/libs/libs.py @@ -249,9 +249,9 @@ def down_from_oss(oss_client, workdir, pid, per=100): print(f'{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())} pid: {pid} 图片下载完成, 共费时{diff_time(start_time)}') -def get_defineDistances(distances): +def get_defineDistances(psid): res = '' - distances = distances.split(';') + distances = libs_db.get_floor_sticker_distances(psid).split(';') for d in distances: p1, p2, distance = d.split(' ') res = res + f' -defineDistance {p1} {p2} {distance}' diff --git a/libs/libs_db.py b/libs/libs_db.py index 9bae8a3..9ad3226 100644 --- a/libs/libs_db.py +++ b/libs/libs_db.py @@ -2,16 +2,20 @@ import pymysql, socket, time import config -# 获取新的任务 -def get_task(task_type): - try: - with pymysql.connect( +#公共连接库 +def pymysqlAlias(): + return pymysql.connect( host=config.mysql_local['host'], port=config.mysql_local['port'], user=config.mysql_local['user'], password=config.mysql_local['password'], db=config.mysql_local['db'], - charset=config.mysql_local['charset'],) as conn: + charset=config.mysql_local['charset'],) + +# 获取新的任务 +def get_task(task_type): + try: + with pymysqlAlias() as conn: cursor = conn.cursor() sql = f'select task_key from tasks where task_type = "{task_type}" and status = 0 order by priority desc, id asc limit 1' @@ -29,13 +33,7 @@ def get_task(task_type): # 新增新的任务 def add_task(data): try: - with pymysql.connect( - host=config.mysql_local['host'], - port=config.mysql_local['port'], - user=config.mysql_local['user'], - password=config.mysql_local['password'], - db=config.mysql_local['db'], - charset=config.mysql_local['charset'],) as conn: + with pymysqlAlias() as conn: cursor = conn.cursor() #判断是否是昆山教学的,是的话优先级设置为默认 @@ -55,13 +53,7 @@ def add_task(data): # 开始任务 def start_task(data): try: - with pymysql.connect( - host=config.mysql_local['host'], - port=config.mysql_local['port'], - user=config.mysql_local['user'], - password=config.mysql_local['password'], - db=config.mysql_local['db'], - charset=config.mysql_local['charset'],) as conn: + with pymysqlAlias() as conn: cursor = conn.cursor() hostname = socket.gethostname() @@ -75,13 +67,7 @@ def start_task(data): # 完成任务 def finish_task(data): try: - with pymysql.connect( - host=config.mysql_local['host'], - port=config.mysql_local['port'], - user=config.mysql_local['user'], - password=config.mysql_local['password'], - db=config.mysql_local['db'], - charset=config.mysql_local['charset'],) as conn: + with pymysqlAlias() as conn: cursor = conn.cursor() hostname = socket.gethostname() @@ -90,4 +76,46 @@ def finish_task(data): cursor.execute(sql) conn.commit() except Exception as e: - print(f"{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())} 执行finish_task({data})异常: {str(e)}") \ No newline at end of file + print(f"{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())} 执行finish_task({data})异常: {str(e)}") + +# 根据影棚ID 获取影棚的配置,如果没有指定的配置,则返回默认配置 +def get_floor_sticker_distances(psid,is_default = False): + try: + with pymysqlAlias() as conn: + cursor = conn.cursor() + sql = f'select a.studio_id,value from floor_sticker_link_studio as a left join floor_sticker_distances as b on a.floor_name = b.name where a.studio_id in (0,{psid})' + # print(f'sql: {sql}') + cursor.execute(sql) + result = cursor.fetchall() + if is_default: + return result[0]["value"] + + if len(result) == 1: + return result[0]["value"] + + if len(result) == 2: + for item in result: + if item["studio_id"] == psid: + return item["value"] + return "error-配置异常,该影棚有多个地贴配置" + except Exception as e: + print(f"{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())} 执行get_floor_sticker_distances()异常: {str(e)}") + return "error" + +#判断是否要走新的建模系统 +def is_new_make_psid(psid): + try: + with pymysqlAlias() as conn: + cursor = conn.cursor() + sql = f'select count(*) from new_make_psid where studio_id = {psid}' + print(f'sql: {sql}') + cursor.execute(sql) + result = cursor.fetchone() + if result[0] > 0: + return True + else: + return False + except Exception as e: + print(f"{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())} 执行is_new_make_psid()异常: {str(e)}") + return "error" + \ No newline at end of file diff --git a/main_step1.py b/main_step1.py index 8618bff..b90ba05 100644 --- a/main_step1.py +++ b/main_step1.py @@ -66,7 +66,7 @@ def detect_markers(psid, pid): -addFolder "{os.path.join(config.workdir, pid, "photo1")}" {config.r["setTextureFalse"]} -align -addFolder "{os.path.join(config.workdir, pid, "photo2")}" \ {add_photo3} -align -selectAllImages \ -detectMarkers "D:\\make2\\config\\detectMarkers.config.xml" \ - {libs.get_defineDistances(config.ps_floor_sticker.get(psid, config.ps_floor_sticker["default"]))} -align -align -update {config.r2["setRegion"]} \ + {libs.get_defineDistances(psid)} -align -align -update {config.r2["setRegion"]} \ -exportXMP "D:\\make2\\config\\exportXMP.config.xml" \ -exportControlPointsMeasurements "{os.path.join(config.workdir, pid, f"{pid}.controlPoints.csv")}" "D:\\make2\\config\\exportControlPoints.config.xml" \ -exportReconstructionRegion "{os.path.join(config.workdir, pid, f"{pid}.rcbox")}" \ @@ -99,7 +99,7 @@ def cal_reconstruction_region(psid, pid): cmd = f'{config.rcbin} {config.r2["init"]} -setInstanceName {pid} \ -load "{os.path.join(config.workdir, pid, f"{pid}.rcproj")}" \ -addFolder "{os.path.join(config.workdir, pid, "photo2")}" -align {add_photo3} \ - -detectMarkers "D:\\make2\\config\\detectMarkers.config.xml" {libs.get_defineDistances(config.ps_floor_sticker.get(psid, config.ps_floor_sticker["default"]))} -align -align \ + -detectMarkers "D:\\make2\\config\\detectMarkers.config.xml" {libs.get_defineDistances(psid)} -align -align \ -update {config.r2["setRegion"]} \ -exportControlPointsMeasurements "{os.path.join(config.workdir, pid, f"{pid}.controlPoints.csv")}" "D:\\make2\\config\\exportControlPoints.config.xml" \ -selectAllImages -exportXMP "D:\\make2\\config\\exportXMP.config.xml" \ diff --git a/test.py b/test.py index 8f612d1..b08a082 100644 --- a/test.py +++ b/test.py @@ -11,8 +11,9 @@ import config, libs, libs_db,common if __name__ == '__main__': - common.copy_remote_directory("172.31.1.11","D:\\7831","E:\\") + #common.copy_remote_directory("172.31.1.11","D:\\7831","E:\\") # config.oss_bucket.delete_object(f'test/test_delete') # #删除oss 上的文件夹里的内容 # object_list = oss2.ObjectIterator(config.oss_bucket, prefix='test/test_delete/') # result = config.oss_bucket.batch_delete_objects([obj.key for obj in object_list]) + print(libs_db.is_new_make_psid(1)) diff --git a/tools/auto_distance.py b/tools/auto_distance.py index 219a9a5..3cc6f44 100644 --- a/tools/auto_distance.py +++ b/tools/auto_distance.py @@ -48,7 +48,7 @@ def find_and_maximize_window(window_title): def get_defineDistances(pid, left, top, right, bottom): psid = libs.getPSid(pid) - distances = config.ps_floor_sticker.get(psid, config.ps_floor_sticker['default']) + distances = libs_db.get_floor_sticker_distances(psid) #config.ps_floor_sticker.get(psid, config.ps_floor_sticker['default']) time.sleep(5) y = 748 for index, d in enumerate(distances.split(';')): diff --git a/tools/gen_xmps.py b/tools/gen_xmps.py index e21c8f3..08920e9 100644 --- a/tools/gen_xmps.py +++ b/tools/gen_xmps.py @@ -78,7 +78,7 @@ def main(pid, lock=False): -load "{os.path.join(config.workdir, pid, f"{pid}.rcproj")}" {config.r["setTextureFalse"]} \ -addFolder "{os.path.join(config.workdir, pid, "photo2")}" -selectAllImages \ -detectMarkers "D:\\make2\\config\\detectMarkers.config.xml" \ - {libs.get_defineDistances(config.ps_floor_sticker.get(psid, config.ps_floor_sticker["default"]))} -update -align -align {config.r2["setRegion"]} \ + {libs.get_defineDistances(psid)} -update -align -align {config.r2["setRegion"]} \ {exportxmp} \ -exportReconstructionRegion "{os.path.join(config.workdir, pid, f"{pid}.rcbox")}" \ -save "{os.path.join(config.workdir, pid, f"{pid}.rcproj")}" -quit'