diff --git a/sf_machine_connect/models/ftp_client.py b/sf_machine_connect/models/ftp_client.py index 2cc1ee5d..ec46d620 100644 --- a/sf_machine_connect/models/ftp_client.py +++ b/sf_machine_connect/models/ftp_client.py @@ -123,128 +123,161 @@ class Machine_ftp(models.Model): # workorder_ids = fields.One2many('mrp.workorder', 'machine_tool_id', string='工单') - # 机床配置项目 - # ftp相关 - ftp_num = fields.Char('ftp账号') - ftp_pwd = fields.Char('ftp密码') - ftp_host = fields.Char('ftp地址') - ftp_port = fields.Integer('ftp端口') - ftp_remote_path = fields.Char('机床ftp路径') - # 补偿值写入相关 - x_compensation_node = fields.Char('x补偿值节点') - y_compensation_node = fields.Char('y补偿值节点') - # 数采配置相关 - machine_ip = fields.Char('机床IP') - machine_signed = fields.Char('机床刷新间隔') - machine_status = fields.Char('机床在线状态') - machine_cnc_type = fields.Char('机床CNC型号') - machine_axis_count = fields.Char('机床轴总数') - machine_run_status = fields.Char('机床运行状态') - machine_emg_status = fields.Char('机床急停状态') - machine_cut_status = fields.Char('机床当前切削状态') - machine_mode = fields.Char('机床当前操作模式') - machine_spindle_load = fields.Char('机床主轴负载') - machine_x_mach = fields.Char('机床X轴机械坐标') - machine_x_abs_mach = fields.Char('机床X轴当前位置') - machine_x_rel_mach = fields.Char('机床X轴相对工件坐标') - machine_x_dis_mach = fields.Char('机床X轴目标距离') - machine_x_axis_load = fields.Char('机床X轴伺服轴负载') - machine_y_mach = fields.Char('机床Y轴机械坐标') - machine_y_abs_mach = fields.Char('机床Y轴当前位置') - machine_y_rel_mach = fields.Char('机床Y轴相对工件坐标') - machine_y_dis_mach = fields.Char('机床Y轴目标距离') - machine_y_axis_load = fields.Char('机床Y轴伺服轴负载') - machine_z_mach = fields.Char('机床Z轴机械坐标') - machine_z_abs_mach = fields.Char('机床Z轴当前位置') - machine_z_rel_mach = fields.Char('机床Z轴相对工件坐标') - machine_z_dis_mach = fields.Char('机床Z轴目标距离') - machine_z_axis_load = fields.Char('机床Z轴伺服轴负载') - machine_tool_num = fields.Char('机床当前刀位号') - machine_program = fields.Char('机床主程序名称') - machine_current_prg = fields.Char('机床当前执行指令') - machine_prg_seq = fields.Char('机床当前执行语句号') - machine_spindle_speed_set = fields.Char('机床设定主轴速度') - machine_act_spindle_speed = fields.Char('机床实际主轴转速') - machine_feed_speed_set = fields.Char('机床设定进给速度') - machine_act_feed_speed = fields.Char('机床实际进给速度') - machine_spindle_feed = fields.Char('机床主轴倍率') - machine_feed_rate = fields.Char('机床进给倍率') - machine_rapid_feed = fields.Char('机床快速移动倍率') - machine_run_time = fields.Char('机床运行时间') - machine_cut_time = fields.Char('机床切削时间') - machine_keep_alive_time = fields.Char('机床上电时间') - machine_circle_time = fields.Char('机床循环时间') - machine_product_counts = fields.Char('机床加工件数') - machine_system_date = fields.Char('机床系统日期') - machine_system_time = fields.Char('机床系统时间') - machine_alarm_msg = fields.Char('机床系统报警') + # # 机床配置项目 + # # ftp相关 + # ftp_num = fields.Char('ftp账号') + # ftp_pwd = fields.Char('ftp密码') + # ftp_host = fields.Char('ftp地址') + # ftp_port = fields.Integer('ftp端口') + # ftp_remote_path = fields.Char('机床ftp路径') + # # 补偿值写入相关 + # x_compensation_node = fields.Char('x补偿值节点') + # y_compensation_node = fields.Char('y补偿值节点') + # # 数采配置相关 + # machine_ip = fields.Char('机床IP') + # machine_signed = fields.Char('机床刷新间隔') + # machine_status = fields.Char('机床在线状态') + # machine_cnc_type = fields.Char('机床CNC型号') + # machine_axis_count = fields.Char('机床轴总数') + # machine_run_status = fields.Char('机床运行状态') + # machine_emg_status = fields.Char('机床急停状态') + # machine_cut_status = fields.Char('机床当前切削状态') + # machine_mode = fields.Char('机床当前操作模式') + # machine_spindle_load = fields.Char('机床主轴负载') + # machine_x_mach = fields.Char('机床X轴机械坐标') + # machine_x_abs_mach = fields.Char('机床X轴当前位置') + # machine_x_rel_mach = fields.Char('机床X轴相对工件坐标') + # machine_x_dis_mach = fields.Char('机床X轴目标距离') + # machine_x_axis_load = fields.Char('机床X轴伺服轴负载') + # machine_y_mach = fields.Char('机床Y轴机械坐标') + # machine_y_abs_mach = fields.Char('机床Y轴当前位置') + # machine_y_rel_mach = fields.Char('机床Y轴相对工件坐标') + # machine_y_dis_mach = fields.Char('机床Y轴目标距离') + # machine_y_axis_load = fields.Char('机床Y轴伺服轴负载') + # machine_z_mach = fields.Char('机床Z轴机械坐标') + # machine_z_abs_mach = fields.Char('机床Z轴当前位置') + # machine_z_rel_mach = fields.Char('机床Z轴相对工件坐标') + # machine_z_dis_mach = fields.Char('机床Z轴目标距离') + # machine_z_axis_load = fields.Char('机床Z轴伺服轴负载') + # machine_tool_num = fields.Char('机床当前刀位号') + # machine_program = fields.Char('机床主程序名称') + # machine_current_prg = fields.Char('机床当前执行指令') + # machine_prg_seq = fields.Char('机床当前执行语句号') + # machine_spindle_speed_set = fields.Char('机床设定主轴速度') + # machine_act_spindle_speed = fields.Char('机床实际主轴转速') + # machine_feed_speed_set = fields.Char('机床设定进给速度') + # machine_act_feed_speed = fields.Char('机床实际进给速度') + # machine_spindle_feed = fields.Char('机床主轴倍率') + # machine_feed_rate = fields.Char('机床进给倍率') + # machine_rapid_feed = fields.Char('机床快速移动倍率') + # machine_run_time = fields.Char('机床运行时间') + # machine_cut_time = fields.Char('机床切削时间') + # machine_keep_alive_time = fields.Char('机床上电时间') + # machine_circle_time = fields.Char('机床循环时间') + # machine_product_counts = fields.Char('机床加工件数') + # machine_system_date = fields.Char('机床系统日期') + # machine_system_time = fields.Char('机床系统时间') + # machine_alarm_msg = fields.Char('机床系统报警') - # 刀位配置 - tool_num1 = fields.Char('刀位1') - tool_num2 = fields.Char('刀位2') - tool_num3 = fields.Char('刀位3') - tool_num4 = fields.Char('刀位4') - tool_num5 = fields.Char('刀位5') - tool_num6 = fields.Char('刀位6') - tool_num7 = fields.Char('刀位7') - tool_num8 = fields.Char('刀位8') - tool_num9 = fields.Char('刀位9') - tool_num10 = fields.Char('刀位10') - tool_num11 = fields.Char('刀位11') - tool_num12 = fields.Char('刀位12') - tool_num13 = fields.Char('刀位13') - tool_num14 = fields.Char('刀位14') - tool_num15 = fields.Char('刀位15') - tool_num16 = fields.Char('刀位16') - tool_num17 = fields.Char('刀位17') - tool_num18 = fields.Char('刀位18') - tool_num19 = fields.Char('刀位19') - tool_num20 = fields.Char('刀位20') - tool_num21 = fields.Char('刀位21') - tool_num22 = fields.Char('刀位22') - tool_num23 = fields.Char('刀位23') - tool_num24 = fields.Char('刀位24') + # # 刀位配置 + # tool_num1 = fields.Char('刀位1') + # tool_num2 = fields.Char('刀位2') + # tool_num3 = fields.Char('刀位3') + # tool_num4 = fields.Char('刀位4') + # tool_num5 = fields.Char('刀位5') + # tool_num6 = fields.Char('刀位6') + # tool_num7 = fields.Char('刀位7') + # tool_num8 = fields.Char('刀位8') + # tool_num9 = fields.Char('刀位9') + # tool_num10 = fields.Char('刀位10') + # tool_num11 = fields.Char('刀位11') + # tool_num12 = fields.Char('刀位12') + # tool_num13 = fields.Char('刀位13') + # tool_num14 = fields.Char('刀位14') + # tool_num15 = fields.Char('刀位15') + # tool_num16 = fields.Char('刀位16') + # tool_num17 = fields.Char('刀位17') + # tool_num18 = fields.Char('刀位18') + # tool_num19 = fields.Char('刀位19') + # tool_num20 = fields.Char('刀位20') + # tool_num21 = fields.Char('刀位21') + # tool_num22 = fields.Char('刀位22') + # tool_num23 = fields.Char('刀位23') + # tool_num24 = fields.Char('刀位24') # 机床采集项目 timestamp = fields.Datetime('时间戳', readonly=True) - signed = fields.Integer('刷新间隔', readonly=True) - status = fields.Boolean('在线状态', readonly=True) - time_on = fields.Char('总在线时长', readonly=True) - time_on_now = fields.Char('本次在线时长', readonly=True) - tool_num = fields.Integer('当前刀具', readonly=True) - program = fields.Char('当前程序', readonly=True) - run_status = fields.Selection([('0', '空闲中'), ('1', '加工中'), ('2', '加工中'), ('3', '加工中')], string='运行状态', + status = fields.Boolean('机床在线状态', readonly=True) + run_status = fields.Selection([('0', '空闲中'), ('1', '加工中'), ('2', '加工中'), ('3', '加工中')], string='机床运行状态', readonly=True, default='0') - run_time = fields.Char('总运行时长', readonly=True) - cut_time = fields.Char('总切削时长', readonly=True) - cut_status = fields.Selection([('0', '未切削'), ('1', '切削中'), ('2', '切削中'), ('3', '切削中')], string='切削状态', - readonly=True, default='0') - spindle_speed = fields.Char('主轴转速', readonly=True) + run_time = fields.Char('机床累计运行时长', readonly=True) + # 机床系统日期 + system_date = fields.Char('机床系统日期', readonly=True) + # 机床系统时间 + system_time = fields.Char('机床系统时间', readonly=True) - tool_num_process_time1 = fields.Char('刀位1', readonly=True, default='0') - tool_num_process_time2 = fields.Char('刀位2', readonly=True, default='0') - tool_num_process_time3 = fields.Char('刀位3', readonly=True, default='0') - tool_num_process_time4 = fields.Char('刀位4', readonly=True, default='0') - tool_num_process_time5 = fields.Char('刀位5', readonly=True, default='0') - tool_num_process_time6 = fields.Char('刀位6', readonly=True, default='0') - tool_num_process_time7 = fields.Char('刀位7', readonly=True, default='0') - tool_num_process_time8 = fields.Char('刀位8', readonly=True, default='0') - tool_num_process_time9 = fields.Char('刀位9', readonly=True, default='0') - tool_num_process_time10 = fields.Char('刀位10', readonly=True, default='0') - tool_num_process_time11 = fields.Char('刀位11', readonly=True, default='0') - tool_num_process_time12 = fields.Char('刀位12', readonly=True, default='0') - tool_num_process_time13 = fields.Char('刀位13', readonly=True, default='0') - tool_num_process_time14 = fields.Char('刀位14', readonly=True, default='0') - tool_num_process_time15 = fields.Char('刀位15', readonly=True, default='0') - tool_num_process_time16 = fields.Char('刀位16', readonly=True, default='0') - tool_num_process_time17 = fields.Char('刀位17', readonly=True, default='0') - tool_num_process_time18 = fields.Char('刀位18', readonly=True, default='0') - tool_num_process_time19 = fields.Char('刀位19', readonly=True, default='0') - tool_num_process_time20 = fields.Char('刀位20', readonly=True, default='0') - tool_num_process_time21 = fields.Char('刀位21', readonly=True, default='0') - tool_num_process_time22 = fields.Char('刀位22', readonly=True, default='0') - tool_num_process_time23 = fields.Char('刀位23', readonly=True, default='0') - tool_num_process_time24 = fields.Char('刀位24', readonly=True, default='0') + cut_time = fields.Char('机床累计切削时间', readonly=True) + cut_status = fields.Selection([('0', '未切削'), ('1', '切削中'), ('2', '切削中'), ('3', '切削中')], string='机床当前切削状态', + readonly=True, default='0') + # 当前程序名 + + program = fields.Char('机床当前程序', readonly=True) + + # 当前刀具号 + tool_num = fields.Integer('机床当前刀具号', readonly=True) + + # 机床通电开机时间, 机床加工件数, 机床当前操作模式, 开始加工时间, 结束加工时间, 加工程序开始时间, 加工程序结束时间, 待机开始时间, + # 待机结束时间, 机床离线开始时间, 机床离线结束时间, 机床急停状态, 机床主程序名称, 程序运行的状态, 机床当前执行指令, 机床当前执行语句号 + # 机床X轴当前位置, 机床Y轴当前位置, 机床Z轴当前位置 + machine_power_on_time = fields.Char('机床通电开机时间', readonly=True) + product_counts = fields.Char('机床加工件数', readonly=True) + mode = fields.Char('机床当前操作模式', readonly=True) + start_time = fields.Char('开始加工时间', readonly=True) + end_time = fields.Char('结束加工时间', readonly=True) + program_start_time = fields.Char('加工程序开始时间', readonly=True) + program_end_time = fields.Char('加工程序结束时间', readonly=True) + standby_start_time = fields.Char('待机开始时间', readonly=True) + standby_end_time = fields.Char('待机结束时间', readonly=True) + offline_start_time = fields.Char('机床离线开始时间', readonly=True) + offline_end_time = fields.Char('机床离线结束时间', readonly=True) + emg_status = fields.Char('机床急停状态', readonly=True) + program_name = fields.Char('机床主程序名称', readonly=True) + program_status = fields.Char('程序运行状态', readonly=True) + current_program = fields.Char('机床当前执行指令', readonly=True) + current_program_seq = fields.Char('机床当前执行语句号', readonly=True) + x_abs_pos = fields.Char('机床X轴当前位置', readonly=True) + y_abs_pos = fields.Char('机床Y轴当前位置', readonly=True) + z_abs_pos = fields.Char('机床Z轴当前位置', readonly=True) + + # 机床设定进给速度, 机床实际进给速度, 机床设定主轴转速, 机床实际主轴转速, 机床主轴负载, 机床X轴伺服轴负载, 机床Y轴伺服轴负载 + # 机床Z轴伺服轴负载, 机床快速移动倍率, 机床进给倍率, 机床X轴机械坐标, 机床Y轴机械坐标, 机床Z轴机械坐标, 机床X轴相对工件坐标 + # 机床Y轴相对工件坐标, 机床Z轴相对工件坐标, 机床X轴目标距离, 机床Y轴目标距离, 机床Z轴目标距离 + feed_speed_set = fields.Char('机床设定进给速度', readonly=True) + act_feed_speed = fields.Char('机床实际进给速度', readonly=True) + spindle_speed_set = fields.Char('机床设定主轴转速', readonly=True) + act_spindle_speed = fields.Char('机床实际主轴转速', readonly=True) + spindle_load = fields.Char('机床主轴负载', readonly=True) + x_axis_load = fields.Char('机床X轴伺服轴负载', readonly=True) + y_axis_load = fields.Char('机床Y轴伺服轴负载', readonly=True) + z_axis_load = fields.Char('机床Z轴伺服轴负载', readonly=True) + rapid_feed = fields.Char('机床快速移动倍率', readonly=True) + feed_rate = fields.Char('机床进给倍率', readonly=True) + x_mach_coord = fields.Char('机床X轴机械坐标', readonly=True) + y_mach_coord = fields.Char('机床Y轴机械坐标', readonly=True) + z_mach_coord = fields.Char('机床Z轴机械坐标', readonly=True) + x_rel_coord = fields.Char('机床X轴相对工件坐标', readonly=True) + y_rel_coord = fields.Char('机床Y轴相对工件坐标', readonly=True) + z_rel_coord = fields.Char('机床Z轴相对工件坐标', readonly=True) + x_dis_coord = fields.Char('机床X轴目标距离', readonly=True) + y_dis_coord = fields.Char('机床Y轴目标距离', readonly=True) + z_dis_coord = fields.Char('机床Z轴目标距离', readonly=True) + + # 故障报警时间, 故障报警信息, 故障消除时间(复原时间) + alarm_time = fields.Char('故障报警时间', readonly=True) + alarm_msg = fields.Char('故障报警信息', readonly=True) + clear_time = fields.Char('故障消除时间(复原时间)', readonly=True) + + # 当前程序名, 机床累计运行时间, 机床系统日期, 机床系统时间, 当前刀具号, 机床循环时间 class WorkCenterBarcode(models.Model): @@ -259,39 +292,59 @@ class WorkCenterBarcode(models.Model): button_compensation_state = fields.Boolean(string='是否已经补偿', readonly=True) button_up_all_state = fields.Boolean(string='是否已经全部下发', readonly=True) machine_tool_id = fields.Many2one('sf.machine_tool.type', string='机床') - machine_tool_name = fields.Char(string='机床名称', default='未知机床', compute='_run_info', readonly=True) - machine_tool_type_id = fields.Char(string='机床型号', default='未知型号', compute='_run_info', readonly=True) - machine_tool_status = fields.Boolean(string='在线状态', compute='_run_info', readonly=True) + # machine_tool_name = fields.Char(string='机床名称', default='未知机床', compute='_run_info', readonly=True) + # machine_tool_type_id = fields.Char(string='机床型号', default='未知型号', compute='_run_info', readonly=True) + # machine_tool_status = fields.Boolean(string='在线状态', compute='_run_info', readonly=True) + # machine_tool_run_status = fields.Selection([('0', '关机中'), ('1', '加工中'), ('2', '加工中'), ('3', '加工中')], + # string='运行状态', compute='_run_info', readonly=True, default='0') + # machine_tool_timestamp = fields.Datetime('时间戳', compute='_run_info', readonly=True) + # machine_tool_time_on = fields.Char('总在线时长', compute='_run_info', readonly=True) + # machine_tool_time_on_now = fields.Char('本次在线时长', compute='_run_info', readonly=True) + # machine_tool_tool_num = fields.Integer('当前刀具', compute='_run_info', readonly=True) + # machine_tool_program = fields.Char('当前程序', compute='_run_info', readonly=True) + # machine_tool_machine_ip = fields.Char('机床IP', compute='_run_info', readonly=True) + # machine_tool_cut_status = fields.Selection([('0', '未切削'), ('1', '切削中'), ('2', '切削中'), ('3', '切削中')], + # string='切削状态', compute='_run_info', readonly=True, default='0') + # machine_tool_compensation_value_x = fields.Char('x补偿值', compute='_run_info', readonly=True) + # machine_tool_compensation_value_y = fields.Char('y补偿值', compute='_run_info', readonly=True) + + machine_tool_name = fields.Char(string='机床名称', default='未知机床', readonly=True) + machine_tool_type_id = fields.Char(string='机床型号', default='未知型号', readonly=True) + machine_tool_status = fields.Boolean(string='在线状态', readonly=True) machine_tool_run_status = fields.Selection([('0', '关机中'), ('1', '加工中'), ('2', '加工中'), ('3', '加工中')], - string='运行状态', compute='_run_info', readonly=True, default='0') - machine_tool_timestamp = fields.Datetime('时间戳', compute='_run_info', readonly=True) - machine_tool_time_on = fields.Char('总在线时长', compute='_run_info', readonly=True) - machine_tool_time_on_now = fields.Char('本次在线时长', compute='_run_info', readonly=True) - machine_tool_tool_num = fields.Integer('当前刀具', compute='_run_info', readonly=True) - machine_tool_program = fields.Char('当前程序', compute='_run_info', readonly=True) - machine_tool_machine_ip = fields.Char('机床IP', compute='_run_info', readonly=True) + string='运行状态', readonly=True, default='0') + machine_tool_timestamp = fields.Datetime('时间戳', readonly=True) + machine_tool_time_on = fields.Char('总在线时长', readonly=True) + machine_tool_time_on_now = fields.Char('本次在线时长', readonly=True) + machine_tool_tool_num = fields.Integer('当前刀具', readonly=True) + machine_tool_program = fields.Char('当前程序', readonly=True) + machine_tool_machine_ip = fields.Char('机床IP', readonly=True) machine_tool_cut_status = fields.Selection([('0', '未切削'), ('1', '切削中'), ('2', '切削中'), ('3', '切削中')], - string='切削状态', compute='_run_info', readonly=True, default='0') - machine_tool_compensation_value_x = fields.Char('x补偿值', compute='_run_info', readonly=True) - machine_tool_compensation_value_y = fields.Char('y补偿值', compute='_run_info', readonly=True) + string='切削状态', readonly=True, default='0') + machine_tool_compensation_value_x = fields.Char('x补偿值', readonly=True) + machine_tool_compensation_value_y = fields.Char('y补偿值', readonly=True) + + # 工单状态 + delivery_records = fields.One2many('delivery.record', 'workorder_id', string="下发记录") @api.depends('equipment_id.timestamp') def _run_info(self): # self.machine_tool_name = '1号机床' - self.machine_tool_name = self.equipment_id.name - self.machine_tool_type_id = self.equipment_id.type_id.name - self.machine_tool_status = self.equipment_id.status - self.machine_tool_run_status = self.equipment_id.run_status - self.machine_tool_timestamp = self.equipment_id.timestamp - self.machine_tool_time_on = self.equipment_id.time_on - self.machine_tool_time_on_now = self.equipment_id.time_on_now - self.machine_tool_tool_num = self.equipment_id.tool_num - self.machine_tool_program = self.equipment_id.program - self.machine_tool_machine_ip = self.equipment_id.machine_ip - self.machine_tool_cut_status = self.equipment_id.cut_status - self.machine_tool_compensation_value_x = self.compensation_value_x - self.machine_tool_compensation_value_y = self.compensation_value_y + # self.machine_tool_name = self.equipment_id.name + # self.machine_tool_type_id = self.equipment_id.type_id.name + # self.machine_tool_status = self.equipment_id.status + # self.machine_tool_run_status = self.equipment_id.run_status + # self.machine_tool_timestamp = self.equipment_id.timestamp + # self.machine_tool_time_on = self.equipment_id.time_on + # self.machine_tool_time_on_now = self.equipment_id.time_on_now + # self.machine_tool_tool_num = self.equipment_id.tool_num + # self.machine_tool_program = self.equipment_id.program + # self.machine_tool_machine_ip = self.equipment_id.machine_ip + # self.machine_tool_cut_status = self.equipment_id.cut_status + # self.machine_tool_compensation_value_x = self.compensation_value_x + # self.machine_tool_compensation_value_y = self.compensation_value_y + pass def compensation(self): diff --git a/sf_machine_connect/views/machine_monitor.xml b/sf_machine_connect/views/machine_monitor.xml index d52bead8..c6964659 100644 --- a/sf_machine_connect/views/machine_monitor.xml +++ b/sf_machine_connect/views/machine_monitor.xml @@ -13,294 +13,138 @@ - - + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index 9ccbaea6..960d4b14 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -34,8 +34,9 @@ class MrpProduction(models.Model): @api.depends('workorder_ids.tool_state') def _compute_tool_state(self): + # if self.workorder_ids: for item in self: - if item: + if item.workorder_ids: workorder_ids = item.workorder_ids.filtered(lambda a: a.state not in ('rework', '返工')) if workorder_ids.filtered(lambda a: a.tool_state == '2'): item.tool_state = '2' diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index a634dc9f..2d8ecfb5 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -827,6 +827,7 @@ class ResMrpWorkOrder(models.Model): # workorder.state = 'waiting' # if workorder.routing_type == 'CNC加工' and workorder.state == 'progress': # workorder.state = 'to be detected' + # for workorder in self: # if workorder.is_rework is True and workorder.state == 'done': # cnc_work = self.env['mrp.workorder'].search([('routing_type','=','CNC加工'),('production_id','=',workorder.production_id.id)]) @@ -865,12 +866,10 @@ class ResMrpWorkOrder(models.Model): limit=1, order='id asc') if not cnc_workorder.cnc_ids: raise UserError(_('该制造订单还未下发CNC程序,请稍后再试')) - # else: - # for item in cnc_workorder.cnc_ids: - # functional_cutting_tool = self.env['sf.functional.cutting.tool.entity'].search( - # [('tool_name_id.name', '=', item.cutting_tool_name)]) - # if not functional_cutting_tool: - # raise UserError(_('该制造订单的CNC程序为%s没有对应的功能刀具' % item.cutting_tool_name)) + else: + if self.production_id.tool_state in ['1', '2']: + raise UserError( + f'制造订单【{self.production_id.name}】功能刀具状态为【{self.production_id.tool_state}】!') if self.routing_type == '解除装夹': ''' 记录开始时间 diff --git a/sf_tool_management/models/mrp_workorder.py b/sf_tool_management/models/mrp_workorder.py index d53f62e9..352162b7 100644 --- a/sf_tool_management/models/mrp_workorder.py +++ b/sf_tool_management/models/mrp_workorder.py @@ -84,15 +84,15 @@ class CNCprocessing(models.Model): if production_id: data1 = datas['无效刀'].get(production_id.name) # data1: {'加工面1': [], ...} data2 = datas['缺刀'].get(production_id.name) # data2: {'加工面1': [], ...} - tool_state_remark1 = '' + # tool_state_remark1 = '' tool_state_remark2 = '' # 对无效刀信息进行处理 for key in data1: if data1.get(key): - if tool_state_remark1 != '': - tool_state_remark1 = f'{tool_state_remark1}\n{key}无效刀:{data1.get(key)}' - else: - tool_state_remark1 = f'{key}无效刀:{data1.get(key)}' + # if tool_state_remark1 != '': + # tool_state_remark1 = f'{tool_state_remark1}\n{key}无效刀:{data1.get(key)}' + # else: + # tool_state_remark1 = f'{key}无效刀:{data1.get(key)}' # 无效刀处理逻辑 # 1、创建制造订单无效刀检测结果记录 logging.info('创建制造订单无效刀检测结果记录!') @@ -105,30 +105,19 @@ class CNCprocessing(models.Model): 'test_results': '返工', 'handle_result': '待处理' }) - # 2、将制造订单状态改为返工 - # production_id.write({ - # 'state': 'rework' - # }) # 对缺刀信息进行处理 - if tool_state_remark1 == '': - for key in data2: - if data2.get(key) and not data1.get(key): - if tool_state_remark2 != '': - tool_state_remark2 = f'{tool_state_remark2}\n{key}缺刀:{data2.get(key)}' - else: - tool_state_remark2 = f'{key}缺刀:{data2.get(key)}' + for key in data2: + if data2.get(key): + if tool_state_remark2 != '': + tool_state_remark2 = f'{tool_state_remark2}\n{key}缺刀:{data2.get(key)}' + else: + tool_state_remark2 = f'{key}缺刀:{data2.get(key)}' # 将备注信息存入制造订单功能刀具状态的备注字段 logging.info('修改制造订单功能刀具状态的备注字段') - if production_id.tool_state_remark2 == '': - production_id.write({ - 'tool_state_remark': tool_state_remark2, - 'tool_state_remark2': tool_state_remark1 - }) - else: - production_id.write({ - 'tool_state_remark': tool_state_remark2, - 'tool_state_remark2': f'{production_id.tool_state_remark}\n{tool_state_remark1}' - }) + production_id.write({ + 'tool_state_remark': tool_state_remark2, + # 'tool_state_remark2': tool_state_remark1 + }) logging.info('工单cnc程序用刀校验已完成!') @api.model_create_multi diff --git a/sf_warehouse/models/model.py b/sf_warehouse/models/model.py index ee212b2a..79d7f2c6 100644 --- a/sf_warehouse/models/model.py +++ b/sf_warehouse/models/model.py @@ -416,19 +416,19 @@ class ShelfLocation(models.Model): host = printer_config.printer_id.ip_address port = printer_config.printer_id.port self.print_qr_code(barcode, host, port) - # 获取当前wizard的视图ID或其他标识信息 - view_id = self.env.context.get('view_id') - # 构造返回wizard页面的action字典 - action = { - 'type': 'ir.actions.act_window', - 'name': '返回 Wizard', - 'res_model': 'sf.shelf', # 替换为你的wizard模型名称 - 'view_mode': 'form', - 'view_id': view_id, # 如果需要基于特定的视图返回 - 'target': 'new', # 如果需要在新的窗口或标签页打开 - 'res_id': self.shelf_id, # 如果你想要返回当前记录的视图 - } - return action + # # 获取当前wizard的视图ID或其他标识信息 + # view_id = self.env.context.get('view_id') + # # 构造返回wizard页面的action字典 + # action = { + # 'type': 'ir.actions.act_window', + # 'name': '返回 Wizard', + # 'res_model': 'sf.shelf', # 替换为你的wizard模型名称 + # 'view_mode': 'form', + # 'view_id': view_id, # 如果需要基于特定的视图返回 + # 'target': 'new', # 如果需要在新的窗口或标签页打开 + # 'res_id': self.shelf_id, # 如果你想要返回当前记录的视图 + # } + # return action # # 仓库类别(selection:库区、库位、货位) # location_type = fields.Selection([