70 lines
3.3 KiB
Python
70 lines
3.3 KiB
Python
import json
|
|
from odoo import http
|
|
from odoo.http import request
|
|
from odoo.addons.sf_machine_connect.models.ftp_operate import transfer_files
|
|
from odoo.addons.sf_base.decorators.api_log import api_log
|
|
|
|
class MainController(http.Controller):
|
|
|
|
@http.route('/api/manual_download_program', type='json', methods=['POST'], auth='wechat_token', cors='*')
|
|
@api_log('人工线下加工编程文件传输', requester='报工系统')
|
|
def manual_download_program(self):
|
|
"""
|
|
人工线下加工传输编程文件
|
|
"""
|
|
data = json.loads(request.httprequest.data)
|
|
maintenance_equipment_id = data.get('maintenance_equipment_id')
|
|
model_id = data.get('model_id')
|
|
if not maintenance_equipment_id or not model_id:
|
|
return {'code': 400, 'message': '参数错误'}
|
|
try:
|
|
model_id = int(model_id)
|
|
except Exception as e:
|
|
return {'code': 400, 'message': '参数类型错误'}
|
|
maintenance_equipment = request.env['maintenance.equipment'].sudo().search(
|
|
[('MTcode', '=', maintenance_equipment_id), ('category_id.equipment_type', '=', '机床')],
|
|
limit=1
|
|
)
|
|
if not maintenance_equipment:
|
|
return {'code': 400, 'message': '机台不存在,请扫描正确的机台二维码'}
|
|
product = request.env['product.template'].sudo().search([('model_id', '=', model_id)], limit=1)
|
|
if not product:
|
|
return {'code': 400, 'message': '请扫描正确的图纸'}
|
|
# 获取刀具组
|
|
tool_groups_id = request.env['sf.tool.groups'].sudo().search([('equipment_ids', 'in', maintenance_equipment.id)], limit=1)
|
|
if not tool_groups_id:
|
|
return {'code': 400, 'message': '刀具组不存在'}
|
|
|
|
ftp_resconfig = request.env['res.config.settings'].sudo().get_values()
|
|
if not ftp_resconfig['ftp_host'] or not ftp_resconfig['ftp_port'] or not ftp_resconfig['ftp_user'] or not ftp_resconfig['ftp_password']:
|
|
return {'code': 400, 'message': '编程文件FTP配置错误'}
|
|
source_ftp_info = {
|
|
'host': ftp_resconfig['ftp_host'],
|
|
'port': int(ftp_resconfig['ftp_port']),
|
|
'username': ftp_resconfig['ftp_user'],
|
|
'password': ftp_resconfig['ftp_password']
|
|
}
|
|
if not maintenance_equipment.ftp_host or not maintenance_equipment.ftp_port or not maintenance_equipment.ftp_username or not maintenance_equipment.ftp_password:
|
|
return {'code': 400, 'message': '机台FTP配置错误'}
|
|
target_ftp_info = {
|
|
'host': maintenance_equipment.ftp_host,
|
|
'port': int(maintenance_equipment.ftp_port),
|
|
'username': maintenance_equipment.ftp_username,
|
|
'password': maintenance_equipment.ftp_password
|
|
}
|
|
# 传输nc文件
|
|
try:
|
|
result = transfer_files(
|
|
source_ftp_info,
|
|
target_ftp_info,
|
|
'/' + str(model_id),
|
|
'/',
|
|
match_str=r'^\d*-' + tool_groups_id.name + r'-\w{2}-all\.nc$'
|
|
)
|
|
if len(result) > 0:
|
|
return {'code': 200, 'message': '传输成功', 'file_list': result}
|
|
else:
|
|
return {'code': 404, 'message': '未找到编程文件'}
|
|
except Exception as e:
|
|
return {'code': 500, 'message': str(e)}
|