Files
KCGL/inventory-backend/app/services/print/network_print_service.py
dxc c6fd0aca90 feat: add dynamic printer configuration manager
Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
2026-02-11 14:14:59 +08:00

43 lines
1.7 KiB
Python

import socket
import datetime
from .print_config import PrintConfigManager
class NetworkPrintService:
def __init__(self, ip=None, port=None):
config = PrintConfigManager.get_config('network_printer')
self.ip = ip if ip is not None else config['ip']
self.port = port if port is not None else config['port']
def _send_to_printer(self, content):
"""
对于 A4 打印机,后端直接发送 Socket 指令通常无效或导致乱码。
因此这里只做日志记录,实际打印由前端浏览器完成。
"""
print(f"--- [后端日志] 收到打印请求 (实际由前端处理) ---\n{content}\n----------------")
return True, "记录成功"
def print_outbound_selection(self, items):
"""
仅记录出库日志,不发送物理指令
"""
try:
timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
total_qty = sum([float(i.get('quantity', 0)) for i in items])
# 简单构造一个日志字符串
log_content = f"出库时间: {timestamp}, 总数: {int(total_qty)}\n"
for item in items:
log_content += f"- {item.get('name')} (规格:{item.get('standard')}) x {item.get('quantity')}\n"
# 调用虚拟发送
return self._send_to_printer(log_content)
except Exception as e:
print(f"日志记录失败: {e}")
return True, "记录忽略" # 即使失败也不要在前端报错
def print_stocktake_report(self, data):
# 同样处理
return self._send_to_printer(f"盘点报告: 应盘{data.get('total')}, 实盘{data.get('scanned')}")