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 @@