摄像头逻辑进行修改,更改分辨率进行快速的读取识别

This commit is contained in:
dxc
2026-02-06 11:28:48 +08:00
parent e027ebd4a9
commit 489e62e55b
7 changed files with 788 additions and 708 deletions

View File

@ -1,9 +1,10 @@
from flask import Blueprint, jsonify, request
# ★ [核心修复] 导入正确的模型类名 StockBuy (替换原来的 InboundBuy)
from app.extensions import db
# 导入模型
from app.models.inbound.buy import StockBuy
from app.models.inbound.stocktake import StocktakeDraft # 新增
# 尝试导入半成品和成品模型 (根据你的命名习惯修正为 StockSemi/StockProduct)
# 使用 try-except 防止如果其他文件还没改名导致再次报错
# 尝试导入半成品和成品
try:
from app.models.inbound.semi import StockSemi
except ImportError:
@ -22,30 +23,27 @@ bp = Blueprint('stock_ops', __name__)
@bp.route('/all', methods=['GET'])
def get_all_stock():
"""
获取所有在库物品(采购件+半成品+成品
用于:盘点初始化、出库选单列表
获取所有库存 > 0 的物品(无论状态是 在库 还是 部分出库
"""
try:
# 1. 获取采购件
# ★ [核心修复] 使用 StockBuy 查询,并将状态条件改为 '在库' (匹配你的 Model 定义)
# 1. 采购件 (核心修改:只看库存数量 > 0)
materials = []
if StockBuy:
materials = StockBuy.query.filter(StockBuy.status == '在库').all()
materials = StockBuy.query.filter(StockBuy.stock_quantity > 0).all()
# 2. 获取半成品
# 2. 半成品
semis = []
if StockSemi:
try:
# 假设半成品也使用 '在库' 状态
semis = StockSemi.query.filter(StockSemi.status == '在库').all()
semis = StockSemi.query.filter(StockSemi.stock_quantity > 0).all()
except Exception:
semis = []
# 3. 获取成品
# 3. 成品
products = []
if StockProduct:
try:
products = StockProduct.query.filter(StockProduct.status == '在库').all()
products = StockProduct.query.filter(StockProduct.stock_quantity > 0).all()
except Exception:
products = []
@ -55,44 +53,69 @@ def get_all_stock():
"products": [item.to_dict() for item in products]
}), 200
except Exception as e:
print(f"Error in get_all_stock: {e}") # 输出错误日志以便调试
print(f"Error: {e}")
return jsonify({"message": f"查询库存失败: {str(e)}"}), 500
# --- 草稿箱接口 (断点续传) ---
@bp.route('/draft/list', methods=['GET'])
def get_drafts():
"""获取当前用户的盘点进度"""
user_id = request.args.get('user_id', 'admin')
drafts = StocktakeDraft.query.filter_by(user_id=user_id).all()
return jsonify([d.to_dict() for d in drafts]), 200
@bp.route('/draft/add', methods=['POST'])
def add_draft():
"""扫码同步"""
data = request.json
user_id = data.get('user_id', 'admin')
uuid = data.get('uuid')
# 避免重复插入
exists = StocktakeDraft.query.filter_by(user_id=user_id, uuid=uuid).first()
if not exists:
draft = StocktakeDraft(user_id=user_id, uuid=uuid)
db.session.add(draft)
db.session.commit()
return jsonify({"message": "Saved"}), 200
@bp.route('/draft/clear', methods=['POST'])
def clear_draft():
"""清空进度 (开始新盘点或结束后)"""
data = request.json
user_id = data.get('user_id', 'admin')
StocktakeDraft.query.filter_by(user_id=user_id).delete()
db.session.commit()
return jsonify({"message": "Cleared"}), 200
# --- 打印接口 (保持不变) ---
@bp.route('/print/selection', methods=['POST'])
def print_selection():
"""打印出库选单"""
try:
data = request.json
items = data.get('items', [])
if not items:
return jsonify({"message": "未选择任何物品"}), 400
printer = NetworkPrintService() # 默认连接 192.168.9.205
if not items: return jsonify({"message": "未选择任何物品"}), 400
printer = NetworkPrintService()
success, msg = printer.print_outbound_selection(items)
if success:
return jsonify({"message": "打印指令已发送"}), 200
else:
return jsonify({"message": msg}), 500
return jsonify({"message": "打印指令已发送" if success else msg}), 200 if success else 500
except Exception as e:
return jsonify({"message": f"打印服务错误: {str(e)}"}), 500
return jsonify({"message": str(e)}), 500
@bp.route('/print/stocktake', methods=['POST'])
def print_stocktake():
"""打印盘点报告"""
try:
data = request.json
# data 结构: { total, scanned, missing, missing_items: [] }
printer = NetworkPrintService()
success, msg = printer.print_stocktake_report(data)
if success:
return jsonify({"message": "盘点报告已发送"}), 200
else:
return jsonify({"message": msg}), 500
return jsonify({"message": "盘点报告已发送" if success else msg}), 200 if success else 500
except Exception as e:
return jsonify({"message": f"打印服务错误: {str(e)}"}), 500
return jsonify({"message": str(e)}), 500