123 lines
4.2 KiB
Python
123 lines
4.2 KiB
Python
import json
|
|
|
|
from config.minIO import get_temp_url
|
|
from config.pgDb import pg_pool
|
|
from utils import MyUtils
|
|
|
|
|
|
def insert_sca_image(
|
|
file_name,
|
|
resolution,
|
|
size,
|
|
cocoon_count,
|
|
max_confidence,
|
|
min_confidence,
|
|
average_confidence,
|
|
other_info,
|
|
preprocess_time_ms,
|
|
inference_time_ms,
|
|
postprocess_time_ms,
|
|
name,
|
|
image_pre,
|
|
image_after,
|
|
created_by,
|
|
):
|
|
with pg_pool.getConn() as conn:
|
|
with conn.cursor() as cursor:
|
|
other_info = json.dumps(other_info)
|
|
cursor.execute(
|
|
"""
|
|
INSERT INTO image_sca (
|
|
upload_datetime, file_name, resolution, size, cocoon_count, max_confidence, min_confidence,
|
|
average_confidence, other_info, preprocess_time_ms, inference_time_ms, postprocess_time_ms, name, image_pre, image_after, created_by
|
|
)
|
|
VALUES (NOW(), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s )
|
|
RETURNING id
|
|
""",
|
|
(
|
|
file_name,
|
|
resolution,
|
|
size,
|
|
cocoon_count,
|
|
max_confidence,
|
|
min_confidence,
|
|
average_confidence,
|
|
other_info,
|
|
preprocess_time_ms,
|
|
inference_time_ms,
|
|
postprocess_time_ms,
|
|
name,
|
|
image_pre,
|
|
image_after,
|
|
created_by,
|
|
),
|
|
)
|
|
new_id = cursor.fetchone()[0]
|
|
conn.commit()
|
|
return new_id
|
|
|
|
|
|
def get_sca_image_list(user_id, name, page=1, page_size=10):
|
|
"""
|
|
获取用户已分析图片列表,带分页
|
|
"""
|
|
offset = (page - 1) * page_size
|
|
|
|
with pg_pool.getConn() as conn:
|
|
with conn.cursor() as cursor:
|
|
# 1️⃣ 查询总条数
|
|
# ✅ 改进版:支持 name 为空时统计全部,不为空时模糊统计
|
|
cursor.execute(
|
|
"""
|
|
SELECT COUNT(*)
|
|
FROM image_sca
|
|
WHERE created_by = %s
|
|
AND (%s = '' OR name LIKE '%%' || %s || '%%')
|
|
""",
|
|
(user_id, name, name),
|
|
)
|
|
|
|
total = cursor.fetchone()[0]
|
|
|
|
# 2️⃣ 查询当前页数据
|
|
# ✅ 改进版
|
|
cursor.execute(
|
|
"""
|
|
SELECT id, name, upload_datetime, file_name, image_pre, image_after, resolution,
|
|
size, cocoon_count, max_confidence, min_confidence, average_confidence, other_info, preprocess_time_ms, inference_time_ms, postprocess_time_ms
|
|
FROM image_sca
|
|
WHERE created_by = %s
|
|
AND (%s = '' OR name LIKE '%%' || %s || '%%')
|
|
ORDER BY upload_datetime DESC
|
|
LIMIT %s OFFSET %s
|
|
""",
|
|
(user_id, name, name, page_size, offset),
|
|
)
|
|
|
|
rows = cursor.fetchall()
|
|
|
|
result = []
|
|
for row in rows:
|
|
result.append(
|
|
{
|
|
"id": row[0],
|
|
"name": row[1],
|
|
"upload_datetime": MyUtils.format_datetime(row[2]),
|
|
"file_name": row[3],
|
|
"image_pre": get_temp_url("image-sca", "raw/" + row[4]),
|
|
"image_after": get_temp_url("image-sca", "ai/" + row[5]),
|
|
"resolution": row[6],
|
|
"size": MyUtils.safe_round(row[7] / 1024, 2),
|
|
"cocoon_count": row[8],
|
|
"max_confidence": row[9],
|
|
"min_confidence": row[10],
|
|
"average_confidence": row[11],
|
|
"other_info": row[12],
|
|
"preprocess_time_ms": MyUtils.safe_round(row[13], 4),
|
|
"inference_time_ms": MyUtils.safe_round(row[14], 4),
|
|
"postprocess_time_ms": MyUtils.safe_round(row[15], 4),
|
|
}
|
|
)
|
|
|
|
return total, result
|