diff --git a/sf_machine_connect/models/ftp_client.py b/sf_machine_connect/models/ftp_client.py
index 9b5dda7a..08270510 100644
--- a/sf_machine_connect/models/ftp_client.py
+++ b/sf_machine_connect/models/ftp_client.py
@@ -343,6 +343,95 @@ class WorkCenterBarcode(models.Model):
_logger.info("=====================================", e)
raise UserError('NC下发执行超时, 请检查下发状态')
+ def up_merge_all(self):
+ """
+ 此函数用于将NC代码一键合并下发到机床
+ :return:
+ """
+ # 一键合并下发前删除机床上的全部程序
+ try:
+ filepath = '/nc2machine'
+ del_list = os.listdir(filepath)
+ _logger.info("=====================================%s" % del_list)
+ for f in del_list:
+ file_path = os.path.join(filepath, f)
+ if os.path.isfile(file_path):
+ os.remove(file_path)
+ except Exception as e:
+ _logger.info("=====================================", e)
+ raise UserError('程序删除失败,请重试')
+ # host="192.168.2.158", port=8080, username="MITSUBISHI", password="CNC"
+ try:
+ self.compensation()
+ except Exception:
+ raise UserError("补偿值写入执行超时,请检查机床状态或者写入状态")
+ sequence_collect = []
+ host = self.workcenter_id.machine_tool_id.ftp_host
+ port = self.workcenter_id.machine_tool_id.ftp_port
+ username = self.workcenter_id.machine_tool_id.ftp_num
+ pwd = self.workcenter_id.machine_tool_id.ftp_pwd
+ remote_path = self.workcenter_id.machine_tool_id.ftp_remote_path
+ _logger.info("=====================1666666661111================%s,%s,%s,%s" % (host, port, username, pwd))
+ ftp = ftp_operate.FtpController(host, port, username, pwd)
+ _logger.info("=====================1777777777111================")
+ file_path_local = ''
+ file_path_remote = ''
+
+ try:
+ # 给文件名
+ _logger.info('启动')
+ begin_name1 = self.cnc_ids[0].cnc_id.display_name.split('-')
+ _logger.info(begin_name1)
+ temp_name1 = begin_name1[-1].split('.')
+ final_name = '%s-ALL-MERGE.%s' % (begin_name1[0], temp_name1[-1])
+ _logger.info(final_name)
+ for item in self.cnc_ids:
+ a = item.cnc_id
+ sequence_collect.append(item.sequence_number)
+ datas = base64.standard_b64decode(a.datas)
+ # file_path = '{}\{}\{}'.format(a._filestore(), a.store_fname.split('/'[0]), a.display_name)
+ file_path_local = '{}/{}'.format('/nc2machine', final_name)
+ # 本地测试一键下发
+ # file_path_local = '{}/{}'.format('D:\\jikimo', a.display_name)
+ # file_path_remote = '{}\{}'.format('//M80(192,168,2,142)//DS', a.display_name)
+ file_path_remote = '{}\{}'.format(remote_path, final_name)
+ # 合并文件
+ with open(file_path_local, mode='ab+') as file:
+ file.write(datas)
+ item.button_state = True
+ _logger.info('========一键下发前合并成功===============')
+
+ # 去除合并文件中间部分的头尾
+ with open(file_path_local, mode='rb+') as f:
+ # _logger.info(f.read())
+ # content = f.read()
+ # _logger.info(content)
+ new_content = f.read().replace(b'\r\nM30\r\n%\r\n%\r\n', b'\r\n')
+ # _logger.info(new_content)
+ f.seek(0)
+ f.truncate()
+ f.write(new_content)
+ _logger.info('========二次合并成功===============')
+
+ # 存在本地的文件下发到机床
+ ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
+ _logger.info("======%s一键合并下发成功======" % a.display_name)
+ ftp.close_ftp()
+ # 增加一键合并下发记录
+ up_time = str(datetime.now())
+ sequence_str = ','.join(sequence_collect)
+ self.delivery_records.create({
+ 'delivery_type': '一键合并下发',
+ 'delivery_time': up_time,
+ 'influence_record': sequence_str,
+ })
+ _logger.info("=====================22================")
+ except Exception as e:
+ for item in self.cnc_ids:
+ item.button_state = False
+ _logger.info("=====================================", e)
+ raise UserError('NC下发执行超时, 请检查下发状态')
+
def get__state(self):
pay_time = str(datetime.now())
json = {
diff --git a/sf_machine_connect/models/ftp_operate.py b/sf_machine_connect/models/ftp_operate.py
index dd75ee09..277851ff 100644
--- a/sf_machine_connect/models/ftp_operate.py
+++ b/sf_machine_connect/models/ftp_operate.py
@@ -49,7 +49,7 @@ class FtpController:
self.port = port
self.username = username
self.password = password
- _logger.info("===================ftppppp==================%s,%s,%s,%s" % self.host, self.port, self.username, self.password)
+ # _logger.info("===================ftppppp==================%s,%s,%s,%s" % self.host, self.port, self.username, self.password)
# 测试
print("==============================================")
print(self.username, self.port, self.host, self.password)
diff --git a/sf_machine_connect/views/compensation.xml b/sf_machine_connect/views/compensation.xml
index 8a82ea49..4804df61 100644
--- a/sf_machine_connect/views/compensation.xml
+++ b/sf_machine_connect/views/compensation.xml
@@ -28,6 +28,10 @@
+
+
diff --git a/sf_machine_connect/wizard/action_up.py b/sf_machine_connect/wizard/action_up.py
index e72fa5ff..e7c605e7 100644
--- a/sf_machine_connect/wizard/action_up.py
+++ b/sf_machine_connect/wizard/action_up.py
@@ -73,10 +73,21 @@ class UpSelectWizard(models.TransientModel):
# 合并文件
with open(file_path_local, mode='ab+') as file:
file.write(datas)
-
# 下发成功标识
item.button_state = True
-
+ _logger.info('========初次合并成功===============')
+ _logger.info(file_path_local)
+ # 去除合并文件中间部分的头尾
+ with open(file_path_local, mode='rb+') as f:
+ # _logger.info(f.read())
+ # content = f.read()
+ # _logger.info(content)
+ new_content = f.read().replace(b'\r\nM30\r\n%\r\n%\r\n', b'\r\n')
+ # _logger.info(new_content)
+ f.seek(0)
+ f.truncate()
+ f.write(new_content)
+ _logger.info('========二次合并成功===============')
# 存在本地的文件下发到机床
_logger.info("==========存在服务器成功,准备下发===========")
ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)