盘库盲盘以及导出excel实现
This commit is contained in:
@ -1,8 +1,11 @@
|
||||
from flask import Blueprint, jsonify, request
|
||||
from app.extensions import db
|
||||
# ★★★ 修复点:必须引入 datetime,否则下方更新时间时会报错 500 ★★★
|
||||
from datetime import datetime
|
||||
|
||||
# 导入模型
|
||||
from app.models.inbound.buy import StockBuy
|
||||
from app.models.inbound.stocktake import StocktakeDraft # 新增
|
||||
from app.models.inbound.stocktake import StocktakeDraft
|
||||
|
||||
# 尝试导入半成品和成品
|
||||
try:
|
||||
@ -23,10 +26,10 @@ bp = Blueprint('stock_ops', __name__)
|
||||
@bp.route('/all', methods=['GET'])
|
||||
def get_all_stock():
|
||||
"""
|
||||
获取所有库存 > 0 的物品(无论状态是 在库 还是 部分出库)
|
||||
获取所有库存 > 0 的物品
|
||||
"""
|
||||
try:
|
||||
# 1. 采购件 (核心修改:只看库存数量 > 0)
|
||||
# 1. 采购件
|
||||
materials = []
|
||||
if StockBuy:
|
||||
materials = StockBuy.query.filter(StockBuy.stock_quantity > 0).all()
|
||||
@ -57,7 +60,7 @@ def get_all_stock():
|
||||
return jsonify({"message": f"查询库存失败: {str(e)}"}), 500
|
||||
|
||||
|
||||
# --- 草稿箱接口 (断点续传) ---
|
||||
# --- 草稿箱接口 ---
|
||||
|
||||
@bp.route('/draft/list', methods=['GET'])
|
||||
def get_drafts():
|
||||
@ -69,24 +72,36 @@ def get_drafts():
|
||||
|
||||
@bp.route('/draft/add', methods=['POST'])
|
||||
def add_draft():
|
||||
"""扫码同步"""
|
||||
data = request.json
|
||||
user_id = data.get('user_id', 'admin')
|
||||
uuid = data.get('uuid')
|
||||
"""扫码同步 (支持更新数量)"""
|
||||
try:
|
||||
data = request.json
|
||||
user_id = data.get('user_id', 'admin')
|
||||
uuid = data.get('uuid')
|
||||
quantity = data.get('quantity', 1)
|
||||
|
||||
# 查找是否已存在
|
||||
draft = StocktakeDraft.query.filter_by(user_id=user_id, uuid=uuid).first()
|
||||
|
||||
if draft:
|
||||
# 如果已存在,更新数量和时间
|
||||
draft.quantity = quantity
|
||||
# ★ 修复点:这里需要 datetime 对象
|
||||
draft.scan_time = datetime.now()
|
||||
else:
|
||||
# 如果不存在,创建新的
|
||||
draft = StocktakeDraft(user_id=user_id, uuid=uuid, quantity=quantity)
|
||||
db.session.add(draft)
|
||||
|
||||
# 避免重复插入
|
||||
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
|
||||
return jsonify({"message": "Saved"}), 200
|
||||
except Exception as e:
|
||||
print(f"Add Draft Error: {e}")
|
||||
return jsonify({"message": str(e)}), 500
|
||||
|
||||
|
||||
@bp.route('/draft/clear', methods=['POST'])
|
||||
def clear_draft():
|
||||
"""清空进度 (开始新盘点或结束后)"""
|
||||
"""清空进度"""
|
||||
data = request.json
|
||||
user_id = data.get('user_id', 'admin')
|
||||
|
||||
@ -95,7 +110,7 @@ def clear_draft():
|
||||
return jsonify({"message": "Cleared"}), 200
|
||||
|
||||
|
||||
# --- 打印接口 (保持不变) ---
|
||||
# --- 打印接口 ---
|
||||
|
||||
@bp.route('/print/selection', methods=['POST'])
|
||||
def print_selection():
|
||||
|
||||
Reference in New Issue
Block a user