fix: add missing imports for openpyxl and patch draft resolution in stock adjustment
This commit is contained in:
@ -14,6 +14,17 @@ from app.models.inbound.stocktake import StocktakeDraft
|
||||
from app.models.transaction import TransBorrow
|
||||
from app.models.base import MaterialBase
|
||||
|
||||
# 尝试导入半成品和成品
|
||||
try:
|
||||
from app.models.inbound.semi import StockSemi
|
||||
except ImportError:
|
||||
StockSemi = None
|
||||
|
||||
try:
|
||||
from app.models.inbound.product import StockProduct
|
||||
except ImportError:
|
||||
StockProduct = None
|
||||
|
||||
|
||||
def _normalize_user_id(user_id):
|
||||
"""规范化 user_id,确保是有效字符串"""
|
||||
@ -356,17 +367,22 @@ def adjust_stock():
|
||||
"""
|
||||
data = request.json
|
||||
draft_id = data.get('draft_id')
|
||||
stock_id = data.get('stock_id') # 备用参数:通过 stock_id 查找草稿
|
||||
operator_name = data.get('operator_name', 'System')
|
||||
remark = data.get('remark', '')
|
||||
|
||||
if not draft_id:
|
||||
return jsonify({"message": "draft_id 不能为空"}), 400
|
||||
if not draft_id and not stock_id:
|
||||
return jsonify({"message": "draft_id 或 stock_id 不能同时为空"}), 400
|
||||
|
||||
try:
|
||||
# 1. 获取草稿记录
|
||||
draft = StocktakeDraft.query.get(draft_id)
|
||||
# 1. 获取草稿记录(优先用 draft_id,否则用 stock_id)
|
||||
draft = StocktakeDraft.query.get(draft_id) if draft_id else None
|
||||
if not draft and stock_id:
|
||||
# 尝试通过 stock_id 查找未处理的草稿
|
||||
draft = StocktakeDraft.query.filter_by(stock_id=stock_id).first()
|
||||
|
||||
if not draft:
|
||||
return jsonify({"message": "草稿记录不存在"}), 404
|
||||
return jsonify({"message": f"平账失败:找不到对应的盘点草稿记录(draft_id={draft_id}, stock_id={stock_id})"}), 404
|
||||
|
||||
# 2. 获取库存记录
|
||||
if not draft.stock_id or not draft.source_table:
|
||||
|
||||
@ -448,10 +448,15 @@ const api = {
|
||||
params: {}
|
||||
}),
|
||||
// ★ 新增: 单条库存调整
|
||||
adjustStock: (draftId: number, remark: string) => request({
|
||||
adjustStock: (draftId: number, stockId: number, remark: string) => request({
|
||||
url: '/v1/inbound/stock/adjust',
|
||||
method: 'post',
|
||||
data: { draft_id: draftId, operator_name: currentUser, remark: remark }
|
||||
data: {
|
||||
draft_id: draftId,
|
||||
stock_id: stockId, // 备用参数
|
||||
operator_name: currentUser,
|
||||
remark: remark
|
||||
}
|
||||
}),
|
||||
// ★ 保留清除功能(用于兼容性)
|
||||
clearDraft: () => request({
|
||||
@ -755,7 +760,10 @@ const exportToExcel = async () => {
|
||||
const res: any = await request({
|
||||
url: '/v1/inbound/stock/export-stocktake',
|
||||
method: 'get',
|
||||
responseType: 'blob' as any // 核心:接收二进制文件流
|
||||
responseType: 'blob' as any, // 核心:接收二进制文件流
|
||||
headers: {
|
||||
'Accept': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
||||
}
|
||||
});
|
||||
|
||||
// 触发静默下载
|
||||
@ -886,7 +894,7 @@ const handleAdjust = async (row: any) => {
|
||||
|
||||
const remark = `盘点差异调整 - ${row.diff_qty > 0 ? '盘盈入库' : '盘亏出库'}`
|
||||
|
||||
const res: any = await api.adjustStock(row.id, remark)
|
||||
const res: any = await api.adjustStock(row.id, row.stock_id, remark)
|
||||
|
||||
ElMessage.success(res.message || '调整成功')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user