解决模块更新报错问题
This commit is contained in:
@@ -4,4 +4,3 @@ from . import sf_maintenance_oee
|
|||||||
from . import sf_maintenance_logs
|
from . import sf_maintenance_logs
|
||||||
from . import sf_equipment_maintenance_standards
|
from . import sf_equipment_maintenance_standards
|
||||||
from . import sf_maintenance_requests
|
from . import sf_maintenance_requests
|
||||||
from . import maintenance_printer
|
|
||||||
|
|||||||
@@ -1,92 +0,0 @@
|
|||||||
import qrcode
|
|
||||||
import base64
|
|
||||||
from io import BytesIO
|
|
||||||
from odoo import models, fields, api
|
|
||||||
|
|
||||||
class MaintenanceEquipment(models.Model):
|
|
||||||
_name = 'maintenance.equipment'
|
|
||||||
_inherit = ['maintenance.equipment', 'printing.utils']
|
|
||||||
|
|
||||||
qr_code_image = fields.Binary(string='二维码', compute='_generate_qr_code')
|
|
||||||
|
|
||||||
@api.depends('name')
|
|
||||||
def _generate_qr_code(self):
|
|
||||||
for record in self:
|
|
||||||
# Generate QR code
|
|
||||||
qr = qrcode.QRCode(
|
|
||||||
version=1,
|
|
||||||
error_correction=qrcode.constants.ERROR_CORRECT_L,
|
|
||||||
box_size=10,
|
|
||||||
border=4,
|
|
||||||
)
|
|
||||||
qr.add_data(record.name)
|
|
||||||
qr.make(fit=True)
|
|
||||||
qr_image = qr.make_image(fill_color="black", back_color="white")
|
|
||||||
|
|
||||||
# Encode the image data in base64
|
|
||||||
image_stream = BytesIO()
|
|
||||||
qr_image.save(image_stream, format="PNG")
|
|
||||||
encoded_image = base64.b64encode(image_stream.getvalue())
|
|
||||||
|
|
||||||
record.qr_code_image = encoded_image
|
|
||||||
|
|
||||||
def print_single_method(self):
|
|
||||||
|
|
||||||
print('self.name========== %s' % self.name)
|
|
||||||
self.ensure_one()
|
|
||||||
qr_code_data = self.qr_code_image
|
|
||||||
if not qr_code_data:
|
|
||||||
raise UserError("没有找到二维码数据。")
|
|
||||||
maintenance_equipment_name = self.name
|
|
||||||
# host = "192.168.50.110" # 可以根据实际情况修改
|
|
||||||
# port = 9100 # 可以根据实际情况修改
|
|
||||||
|
|
||||||
# 获取默认打印机配置
|
|
||||||
printer_config = self.env['printer.configuration'].sudo().search([('model', '=', self._name)], limit=1)
|
|
||||||
if not printer_config:
|
|
||||||
raise UserError('请先配置打印机')
|
|
||||||
host = printer_config.printer_id.ip_address
|
|
||||||
port = printer_config.printer_id.port
|
|
||||||
self.print_qr_code(maintenance_equipment_name, host, port)
|
|
||||||
|
|
||||||
|
|
||||||
def generate_zpl_code(self, code):
|
|
||||||
"""生成ZPL代码用于打印二维码标签
|
|
||||||
Args:
|
|
||||||
code: 需要编码的内容
|
|
||||||
Returns:
|
|
||||||
str: ZPL指令字符串
|
|
||||||
"""
|
|
||||||
zpl_code = "^XA\n" # 开始ZPL格式
|
|
||||||
|
|
||||||
# 设置打印参数
|
|
||||||
zpl_code += "^LH0,0\n" # 设置标签起始位置
|
|
||||||
zpl_code += "^CI28\n" # 设置中文编码
|
|
||||||
zpl_code += "^PW400\n" # 设置打印宽度为400点
|
|
||||||
zpl_code += "^LL300\n" # 设置标签长度为300点
|
|
||||||
|
|
||||||
# 打印标题
|
|
||||||
zpl_code += "^FO10,20\n" # 设置标题位置
|
|
||||||
zpl_code += "^A0N,30,30\n" # 设置字体大小
|
|
||||||
zpl_code += "^FD机床二维码^FS\n" # 打印标题文本
|
|
||||||
|
|
||||||
# 打印二维码
|
|
||||||
zpl_code += "^FO50,60\n" # 设置二维码位置
|
|
||||||
zpl_code += f"^BQN,2,8\n" # 设置二维码参数:模式2,放大倍数8
|
|
||||||
zpl_code += f"^FDLA,{code}^FS\n" # 二维码内容
|
|
||||||
|
|
||||||
# 打印编码文本
|
|
||||||
zpl_code += "^FO50,220\n" # 设置编码文本位置
|
|
||||||
zpl_code += "^A0N,25,25\n" # 设置字体大小
|
|
||||||
zpl_code += f"^FD编码: {code}^FS\n" # 打印编码文本
|
|
||||||
|
|
||||||
# 打印日期
|
|
||||||
zpl_code += "^FO50,260\n"
|
|
||||||
zpl_code += "^A0N,20,20\n"
|
|
||||||
zpl_code += f"^FD打印日期: {fields.Date.today()}^FS\n"
|
|
||||||
|
|
||||||
zpl_code += "^PQ1\n" # 打印1份
|
|
||||||
zpl_code += "^XZ\n" # 结束ZPL格式
|
|
||||||
|
|
||||||
return zpl_code
|
|
||||||
|
|
||||||
@@ -34,7 +34,8 @@ class SfMaintenanceEquipmentAGVLog(models.Model):
|
|||||||
|
|
||||||
|
|
||||||
class SfMaintenanceEquipment(models.Model):
|
class SfMaintenanceEquipment(models.Model):
|
||||||
_inherit = 'maintenance.equipment'
|
_name = 'maintenance.equipment'
|
||||||
|
_inherit = ['maintenance.equipment', 'printing.utils']
|
||||||
_description = '设备'
|
_description = '设备'
|
||||||
|
|
||||||
crea_url = "/api/machine_tool/create"
|
crea_url = "/api/machine_tool/create"
|
||||||
@@ -831,6 +832,89 @@ class SfMaintenanceEquipment(models.Model):
|
|||||||
ftp_username = fields.Char('FTP 用户名')
|
ftp_username = fields.Char('FTP 用户名')
|
||||||
ftp_password = fields.Char('FTP 密码')
|
ftp_password = fields.Char('FTP 密码')
|
||||||
|
|
||||||
|
qr_code_image = fields.Binary(string='二维码', compute='_generate_qr_code')
|
||||||
|
|
||||||
|
@api.depends('name')
|
||||||
|
def _generate_qr_code(self):
|
||||||
|
for record in self:
|
||||||
|
# Generate QR code
|
||||||
|
qr = qrcode.QRCode(
|
||||||
|
version=1,
|
||||||
|
error_correction=qrcode.constants.ERROR_CORRECT_L,
|
||||||
|
box_size=10,
|
||||||
|
border=4,
|
||||||
|
)
|
||||||
|
qr.add_data(record.name)
|
||||||
|
qr.make(fit=True)
|
||||||
|
qr_image = qr.make_image(fill_color="black", back_color="white")
|
||||||
|
|
||||||
|
# Encode the image data in base64
|
||||||
|
image_stream = BytesIO()
|
||||||
|
qr_image.save(image_stream, format="PNG")
|
||||||
|
encoded_image = base64.b64encode(image_stream.getvalue())
|
||||||
|
|
||||||
|
record.qr_code_image = encoded_image
|
||||||
|
|
||||||
|
def print_single_method(self):
|
||||||
|
|
||||||
|
print('self.name========== %s' % self.name)
|
||||||
|
self.ensure_one()
|
||||||
|
qr_code_data = self.qr_code_image
|
||||||
|
if not qr_code_data:
|
||||||
|
raise UserError("没有找到二维码数据。")
|
||||||
|
maintenance_equipment_name = self.name
|
||||||
|
# host = "192.168.50.110" # 可以根据实际情况修改
|
||||||
|
# port = 9100 # 可以根据实际情况修改
|
||||||
|
|
||||||
|
# 获取默认打印机配置
|
||||||
|
printer_config = self.env['printer.configuration'].sudo().search([('model', '=', self._name)], limit=1)
|
||||||
|
if not printer_config:
|
||||||
|
raise UserError('请先配置打印机')
|
||||||
|
host = printer_config.printer_id.ip_address
|
||||||
|
port = printer_config.printer_id.port
|
||||||
|
self.print_qr_code(maintenance_equipment_name, host, port)
|
||||||
|
|
||||||
|
|
||||||
|
def generate_zpl_code(self, code):
|
||||||
|
"""生成ZPL代码用于打印二维码标签
|
||||||
|
Args:
|
||||||
|
code: 需要编码的内容
|
||||||
|
Returns:
|
||||||
|
str: ZPL指令字符串
|
||||||
|
"""
|
||||||
|
zpl_code = "^XA\n" # 开始ZPL格式
|
||||||
|
|
||||||
|
# 设置打印参数
|
||||||
|
zpl_code += "^LH0,0\n" # 设置标签起始位置
|
||||||
|
zpl_code += "^CI28\n" # 设置中文编码
|
||||||
|
zpl_code += "^PW400\n" # 设置打印宽度为400点
|
||||||
|
zpl_code += "^LL300\n" # 设置标签长度为300点
|
||||||
|
|
||||||
|
# 打印标题
|
||||||
|
zpl_code += "^FO10,20\n" # 设置标题位置
|
||||||
|
zpl_code += "^A0N,30,30\n" # 设置字体大小
|
||||||
|
zpl_code += "^FD机床二维码^FS\n" # 打印标题文本
|
||||||
|
|
||||||
|
# 打印二维码
|
||||||
|
zpl_code += "^FO50,60\n" # 设置二维码位置
|
||||||
|
zpl_code += f"^BQN,2,8\n" # 设置二维码参数:模式2,放大倍数8
|
||||||
|
zpl_code += f"^FDLA,{code}^FS\n" # 二维码内容
|
||||||
|
|
||||||
|
# 打印编码文本
|
||||||
|
zpl_code += "^FO50,220\n" # 设置编码文本位置
|
||||||
|
zpl_code += "^A0N,25,25\n" # 设置字体大小
|
||||||
|
zpl_code += f"^FD编码: {code}^FS\n" # 打印编码文本
|
||||||
|
|
||||||
|
# 打印日期
|
||||||
|
zpl_code += "^FO50,260\n"
|
||||||
|
zpl_code += "^A0N,20,20\n"
|
||||||
|
zpl_code += f"^FD打印日期: {fields.Date.today()}^FS\n"
|
||||||
|
|
||||||
|
zpl_code += "^PQ1\n" # 打印1份
|
||||||
|
zpl_code += "^XZ\n" # 结束ZPL格式
|
||||||
|
|
||||||
|
return zpl_code
|
||||||
|
|
||||||
|
|
||||||
class SfRobotAxisNum(models.Model):
|
class SfRobotAxisNum(models.Model):
|
||||||
_name = 'sf.robot.axis.num'
|
_name = 'sf.robot.axis.num'
|
||||||
|
|||||||
Reference in New Issue
Block a user