|
@@ -1223,7 +1223,52 @@ def delect_goods_arts(params: PhotoRecordDelete):
|
|
|
"msg": "操作成功",
|
|
"msg": "操作成功",
|
|
|
"data": None,
|
|
"data": None,
|
|
|
}
|
|
}
|
|
|
|
|
+@app.post("/delete_all_goods_arts", description="删除所有拍照记录")
|
|
|
|
|
+def delete_all_goods_arts():
|
|
|
|
|
+ """
|
|
|
|
|
+ 删除数据库中所有未删除的拍照记录,并清理对应的文件目录
|
|
|
|
|
+ """
|
|
|
|
|
+ session = SqlQuery()
|
|
|
|
|
+ try:
|
|
|
|
|
+ # 1. 获取所有存在的货号
|
|
|
|
|
+ photos = CRUD(PhotoRecord)
|
|
|
|
|
+ # 查询所有 distinct 的 goods_art_no
|
|
|
|
|
+ statement = select(PhotoRecord.goods_art_no).where(PhotoRecord.delete_time == None).distinct()
|
|
|
|
|
+ all_goods_art_nos = session.exec(statement).all()
|
|
|
|
|
+
|
|
|
|
|
+ if not all_goods_art_nos:
|
|
|
|
|
+ raise UnicornException("没有可删除的货号")
|
|
|
|
|
|
|
|
|
|
+ # 2. 清理文件目录 (复用现有的 handlerFolderDelete 逻辑)
|
|
|
|
|
+ limit_path = "{}/{}".format(settings.OUTPUT_DIR,
|
|
|
|
|
+ time.strftime("%Y-%m-%d", time.localtime(time.time()))
|
|
|
|
|
+ )
|
|
|
|
|
+ # 注意:handlerFolderDelete 内部可能涉及大量IO操作,如果数据量极大可能需要异步或后台任务
|
|
|
|
|
+ # 这里保持同步以符合原接口风格,但需注意超时风险
|
|
|
|
|
+ handlerFolderDelete(limit_path, list(all_goods_art_nos), False)
|
|
|
|
|
+
|
|
|
|
|
+ # 3. 同步线上状态 (如果需要)
|
|
|
|
|
+ for item in all_goods_art_nos:
|
|
|
|
|
+ settings.syncPhotoRecord({"goods_art_no": item}, action_type=2)
|
|
|
|
|
+
|
|
|
|
|
+ # 4. 批量删除数据库记录
|
|
|
|
|
+ # 使用 deleteConditions 一次性删除所有符合条件的记录,比循环删除效率高
|
|
|
|
|
+ photos.deleteConditions(session, conditions={"delete_time": None})
|
|
|
|
|
+
|
|
|
|
|
+ session.commit() # 确保事务提交
|
|
|
|
|
+
|
|
|
|
|
+ return {
|
|
|
|
|
+ "code": 0,
|
|
|
|
|
+ "msg": f"成功删除 {len(all_goods_art_nos)} 个货号的所有记录",
|
|
|
|
|
+ "data": None,
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ except Exception as e:
|
|
|
|
|
+ session.rollback()
|
|
|
|
|
+ logger.error(f"删除所有记录失败: {str(e)}")
|
|
|
|
|
+ raise UnicornException(f"删除失败: {str(e)}")
|
|
|
|
|
+ finally:
|
|
|
|
|
+ session.close()
|
|
|
|
|
|
|
|
def query_config_by_key(key_name):
|
|
def query_config_by_key(key_name):
|
|
|
"""
|
|
"""
|