修复编程单下发ftp路径
This commit is contained in:
@@ -21,6 +21,7 @@ class Http(models.AbstractModel):
|
|||||||
def _auth_method_sf_token(cls):
|
def _auth_method_sf_token(cls):
|
||||||
# 从headers.environ中获取对方传过来的token,timestamp,加密的校验字符串
|
# 从headers.environ中获取对方传过来的token,timestamp,加密的校验字符串
|
||||||
datas = request.httprequest.headers.environ
|
datas = request.httprequest.headers.environ
|
||||||
|
_logger.info('datas:%s' % datas)
|
||||||
if 'HTTP_TOKEN' in datas:
|
if 'HTTP_TOKEN' in datas:
|
||||||
_logger.info('token:%s' % datas['HTTP_TOKEN'])
|
_logger.info('token:%s' % datas['HTTP_TOKEN'])
|
||||||
# 查询密钥
|
# 查询密钥
|
||||||
|
|||||||
@@ -203,6 +203,7 @@ class Manufacturing_Connect(http.Controller):
|
|||||||
res = {'Succeed': True, 'Datas': ['工单已结束']}
|
res = {'Succeed': True, 'Datas': ['工单已结束']}
|
||||||
datas = request.httprequest.data
|
datas = request.httprequest.data
|
||||||
ret = json.loads(datas)
|
ret = json.loads(datas)
|
||||||
|
logging.info('button_Work_End:%s' % ret)
|
||||||
request.env['center_control.interface.log'].sudo().create(
|
request.env['center_control.interface.log'].sudo().create(
|
||||||
{'content': ret, 'name': 'AutoDeviceApi/FeedBackEnd'})
|
{'content': ret, 'name': 'AutoDeviceApi/FeedBackEnd'})
|
||||||
production_id = ret['BillId']
|
production_id = ret['BillId']
|
||||||
|
|||||||
@@ -1215,11 +1215,13 @@ class CNCprocessing(models.Model):
|
|||||||
|
|
||||||
# 将FTP的多面的程序单文件下载到临时目录
|
# 将FTP的多面的程序单文件下载到临时目录
|
||||||
def download_file_tmp(self, production_no, processing_panel):
|
def download_file_tmp(self, production_no, processing_panel):
|
||||||
remotepath = os.path.join('/NC', production_no, 'return', processing_panel)
|
remotepath = os.path.join('/home/ftp/ftp_root/NC', production_no, 'return', processing_panel)
|
||||||
serverdir = os.path.join('/tmp', production_no, 'return', processing_panel)
|
serverdir = os.path.join('/tmp', production_no, 'return', processing_panel)
|
||||||
ftp_resconfig = self.env['res.config.settings'].get_values()
|
ftp_resconfig = self.env['res.config.settings'].get_values()
|
||||||
ftp = FtpController(str(ftp_resconfig['ftp_host']), int(ftp_resconfig['ftp_port']), ftp_resconfig['ftp_user'],
|
ftp = FtpController(str(ftp_resconfig['ftp_host']), int(ftp_resconfig['ftp_port']), ftp_resconfig['ftp_user'],
|
||||||
ftp_resconfig['ftp_password'])
|
ftp_resconfig['ftp_password'])
|
||||||
|
if not ftp.file_exists_1(remotepath):
|
||||||
|
logging.info('目录不存在:%s' % remotepath)
|
||||||
download_state = ftp.download_program_file(remotepath, serverdir)
|
download_state = ftp.download_program_file(remotepath, serverdir)
|
||||||
logging.info('download_state:%s' % download_state)
|
logging.info('download_state:%s' % download_state)
|
||||||
return download_state
|
return download_state
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import os
|
|||||||
from odoo import models, fields, api, _
|
from odoo import models, fields, api, _
|
||||||
from odoo.exceptions import ValidationError
|
from odoo.exceptions import ValidationError
|
||||||
from odoo.modules import get_resource_path
|
from odoo.modules import get_resource_path
|
||||||
from OCC.Extend.DataExchange import read_step_file
|
# from OCC.Extend.DataExchange import read_step_file
|
||||||
from OCC.Extend.DataExchange import write_stl_file
|
# from OCC.Extend.DataExchange import write_stl_file
|
||||||
|
|
||||||
|
|
||||||
class ResProductMo(models.Model):
|
class ResProductMo(models.Model):
|
||||||
|
|||||||
@@ -31,17 +31,18 @@ class Sf_Mrs_Connect(http.Controller):
|
|||||||
# 拉取所有加工面的程序文件
|
# 拉取所有加工面的程序文件
|
||||||
for r in ret['processing_panel'].split(','):
|
for r in ret['processing_panel'].split(','):
|
||||||
program_path_tmp_r = os.path.join('/tmp', ret['folder_name'], 'return', r)
|
program_path_tmp_r = os.path.join('/tmp', ret['folder_name'], 'return', r)
|
||||||
files_r = os.listdir(program_path_tmp_r)
|
if os.path.exists(program_path_tmp_r):
|
||||||
if files_r:
|
files_r = os.listdir(program_path_tmp_r)
|
||||||
for file_name in files_r:
|
if files_r:
|
||||||
file_path = os.path.join(program_path_tmp_r, file_name)
|
for file_name in files_r:
|
||||||
os.remove(file_path)
|
file_path = os.path.join(program_path_tmp_r, file_name)
|
||||||
|
os.remove(file_path)
|
||||||
download_state = request.env['sf.cnc.processing'].with_user(
|
download_state = request.env['sf.cnc.processing'].with_user(
|
||||||
request.env.ref("base.user_admin")).download_file_tmp(
|
request.env.ref("base.user_admin")).download_file_tmp(
|
||||||
ret['folder_name'], r)
|
ret['folder_name'], r)
|
||||||
if download_state == 0:
|
if download_state == 0:
|
||||||
res['status'] = -2
|
res['status'] = -2
|
||||||
res['message'] = '制造订单号为%s的CNC程序文件从FTP拉取失败' % (cnc_production.name)
|
res['message'] = '编程单号为%s的CNC程序文件从FTP拉取失败' % (ret['programming_no'])
|
||||||
return json.JSONEncoder().encode(res)
|
return json.JSONEncoder().encode(res)
|
||||||
for production in productions:
|
for production in productions:
|
||||||
if not production.workorder_ids:
|
if not production.workorder_ids:
|
||||||
|
|||||||
@@ -21,6 +21,32 @@ class FtpController():
|
|||||||
except Exception:
|
except Exception:
|
||||||
logging.info("ftp连接失败")
|
logging.info("ftp连接失败")
|
||||||
|
|
||||||
|
def file_exists_1(self, path):
|
||||||
|
# 检查文件是否存在于FTP服务器上
|
||||||
|
try:
|
||||||
|
logging.info("path:%s" % path)
|
||||||
|
logging.info("dirname:%s" % os.path.dirname(path))
|
||||||
|
directories = os.path.normpath(path).split(os.path.sep)
|
||||||
|
# 切换到上级目录
|
||||||
|
logging.info("当前目录: %s" % self.ftp.pwd())
|
||||||
|
current_dir = '/'
|
||||||
|
for directory in directories:
|
||||||
|
if directory:
|
||||||
|
# 检查目录是否存在
|
||||||
|
if directory in ['ZM', 'FM', 'YC', 'HC', 'QC', 'ZC']:
|
||||||
|
self.ftp.cwd(directory)
|
||||||
|
if directory in ['NC']:
|
||||||
|
self.ftp.cwd(directory)
|
||||||
|
if directory not in ['home', 'ftp', 'ftp_root', 'NC']:
|
||||||
|
# 切换到新的目录
|
||||||
|
current_dir = os.path.join(current_dir, directory)
|
||||||
|
logging.info("current_dir:%s" % current_dir)
|
||||||
|
self.ftp.cwd(directory)
|
||||||
|
return os.path.basename(path)
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"Error checking file: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
def file_exists(self, path):
|
def file_exists(self, path):
|
||||||
# 检查文件是否存在于FTP服务器上
|
# 检查文件是否存在于FTP服务器上
|
||||||
try:
|
try:
|
||||||
@@ -32,8 +58,23 @@ class FtpController():
|
|||||||
logging.error(f"Error checking file: {e}")
|
logging.error(f"Error checking file: {e}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
# 下载目录下的pdf文件(程序单)
|
||||||
|
def download_program_file(self, target_dir, serverdir):
|
||||||
|
if not os.path.exists(serverdir):
|
||||||
|
os.makedirs(serverdir)
|
||||||
|
try:
|
||||||
|
logging.info('FTP目录:%s' % target_dir)
|
||||||
|
logging.info("进入FTP目录 ")
|
||||||
|
# self.ftp.cwd(target_dir) # 切换工作路径
|
||||||
|
# logging.info('FTP目录:%s' % target_dir)
|
||||||
|
remotenames = self.ftp.nlst()
|
||||||
|
logging.info('FTP目录文件:%s' % remotenames)
|
||||||
|
for file in remotenames:
|
||||||
|
server = os.path.join(serverdir, file)
|
||||||
|
if file.find(".pdf") != -1:
|
||||||
|
self.download_file(server, file)
|
||||||
|
except:
|
||||||
|
return False
|
||||||
|
|
||||||
# # 检测字符串的编码
|
# # 检测字符串的编码
|
||||||
# def detect_encoding(self, s):
|
# def detect_encoding(self, s):
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ from datetime import datetime
|
|||||||
import requests
|
import requests
|
||||||
from odoo import http
|
from odoo import http
|
||||||
from odoo.http import request
|
from odoo.http import request
|
||||||
from OCC.Extend.DataExchange import read_step_file
|
# from OCC.Extend.DataExchange import read_step_file
|
||||||
from OCC.Extend.DataExchange import write_stl_file
|
# from OCC.Extend.DataExchange import write_stl_file
|
||||||
from odoo import models, fields, api
|
from odoo import models, fields, api
|
||||||
from odoo.modules import get_resource_path
|
from odoo.modules import get_resource_path
|
||||||
from odoo.exceptions import ValidationError, UserError
|
from odoo.exceptions import ValidationError, UserError
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import os
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from stl import mesh
|
from stl import mesh
|
||||||
# from OCC.Core.GProp import GProp_GProps
|
# from OCC.Core.GProp import GProp_GProps
|
||||||
from OCC.Extend.DataExchange import read_step_file
|
# from OCC.Extend.DataExchange import read_step_file
|
||||||
from OCC.Extend.DataExchange import write_stl_file
|
# from OCC.Extend.DataExchange import write_stl_file
|
||||||
from odoo.addons.sf_base.commons.common import Common
|
from odoo.addons.sf_base.commons.common import Common
|
||||||
from odoo import models, fields, api
|
from odoo import models, fields, api
|
||||||
from odoo.modules import get_resource_path
|
from odoo.modules import get_resource_path
|
||||||
|
|||||||
Reference in New Issue
Block a user