diff --git a/sf_dlm_management/views/product_template_management_view.xml b/sf_dlm_management/views/product_template_management_view.xml index 1e761cc8..249decdb 100644 --- a/sf_dlm_management/views/product_template_management_view.xml +++ b/sf_dlm_management/views/product_template_management_view.xml @@ -7,7 +7,7 @@ - + - + + diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py index 22cb1b42..649c757e 100644 --- a/sf_tool_management/models/base.py +++ b/sf_tool_management/models/base.py @@ -39,24 +39,29 @@ class FunctionalCuttingToolEntity(models.Model): functional_tool_status = fields.Selection([('正常', '正常'), ('报警', '报警'), ('已拆除', '已拆除')], string='状态', store=True, default='正常') current_location_id = fields.Many2one('stock.location', string='当前位置', readonly=True) - current_location = fields.Char('位置', compute='_compute_current_location_id') + current_location = fields.Selection( + [('组装后', '组装后'), ('刀具房', '刀具房'), ('线边刀库', '线边刀库'), ('机内刀库', '机内刀库')], + string='位置', compute='_compute_current_location_id', store=True) image = fields.Binary('图片', readonly=True) active = fields.Boolean(string='已归档', default=True) - @api.depends('barcode_id') + @api.depends('barcode_id.quant_ids') def _compute_current_location_id(self): for record in self: if record.barcode_id.quant_ids: for quant_id in record.barcode_id.quant_ids: if quant_id.inventory_quantity_auto_apply > 0: - record.sudo().current_location_id = quant_id.location_id - record.sudo().current_location = quant_id.location_id.name + record.current_location_id = quant_id.location_id + if quant_id.location_id.name == '制造前': + record.current_location = '机内刀库' + else: + record.current_location = quant_id.location_id.name if record.current_location_id: record.sudo().get_location_num() else: - record.sudo().current_location_id = False - record.sudo().current_location = False + record.current_location_id = False + record.current_location = False def get_location_num(self): """ @@ -64,15 +69,15 @@ class FunctionalCuttingToolEntity(models.Model): """ for obj in self: if obj.current_location_id: - if obj.current_location_id.name in ['刀具房']: + if obj.current_location in ['刀具房']: obj.tool_room_num = 1 obj.line_edge_knife_library_num = 0 obj.machine_knife_library_num = 0 - elif "线边刀库" in obj.current_location_id.name: + elif "线边刀库" in obj.current_location: obj.tool_room_num = 0 obj.line_edge_knife_library_num = 1 obj.machine_knife_library_num = 0 - elif "机内刀库" in obj.current_location_id.name: + elif "机内刀库" in obj.current_location: obj.tool_room_num = 0 obj.line_edge_knife_library_num = 0 obj.machine_knife_library_num = 1 @@ -180,33 +185,45 @@ class FunctionalCuttingToolEntity(models.Model): ('coarse_middle_thin', '=', self.coarse_middle_thin)] return result - # ==========刀具组接口========== - # def _register_functional_tool_groups(self, obj): - # create_url = '/AutoDeviceApi/ToolGroup' - # sf_sync_config = self.env['res.config.settings'].get_values() - # token = sf_sync_config['token'] - # sf_secret_key = sf_sync_config['sf_secret_key'] - # headers = Common.get_headers(obj, token, sf_secret_key) - # strurl = sf_sync_config['sf_url'] + create_url - # val = { - # 'ToolName': obj.name, - # 'GroupName': obj.tool_groups_id.name, - # 'ToolId': obj.code - # } - # kw = json.dumps(val, ensure_ascii=False) - # r = requests.post(strurl, json={}, data={'kw': kw, 'token': token}, headers=headers) - # ret = r.json() - # if r == 200: - # return "刀具组发送成功" - # else: - # raise ValidationError("刀具组发送失败") + def tool_inventory_displacement_out(self): + """ + 机床当前刀库实时信息接口,功能刀具出库 + """ + # 获取位置对象 + location_inventory_id = self.current_location_id + stock_location_id = self.env['stock.location'].search([('name', '=', '制造前')]) + # 创建功能刀具该批次/序列号 库存移动和移动历史 + self.barcode_id.create_stock_quant(location_inventory_id, stock_location_id, + self.functional_tool_name_id.id, '机床装刀') - # @api.model_create_multi - # def create(self, vals): - # obj = super(FunctionalCuttingToolEntity, self).create(vals) - # # 调用刀具组接口 - # self._register_functional_tool_groups(obj) - # return obj + +# ==========刀具组接口========== +# def _register_functional_tool_groups(self, obj): +# create_url = '/AutoDeviceApi/ToolGroup' +# sf_sync_config = self.env['res.config.settings'].get_values() +# token = sf_sync_config['token'] +# sf_secret_key = sf_sync_config['sf_secret_key'] +# headers = Common.get_headers(obj, token, sf_secret_key) +# strurl = sf_sync_config['sf_url'] + create_url +# val = { +# 'ToolName': obj.name, +# 'GroupName': obj.tool_groups_id.name, +# 'ToolId': obj.code +# } +# kw = json.dumps(val, ensure_ascii=False) +# r = requests.post(strurl, json={}, data={'kw': kw, 'token': token}, headers=headers) +# ret = r.json() +# if r == 200: +# return "刀具组发送成功" +# else: +# raise ValidationError("刀具组发送失败") + +# @api.model_create_multi +# def create(self, vals): +# obj = super(FunctionalCuttingToolEntity, self).create(vals) +# # 调用刀具组接口 +# self._register_functional_tool_groups(obj) +# return obj class FunctionalToolWarning(models.Model): diff --git a/sf_tool_management/models/maintenance_equipment.py b/sf_tool_management/models/maintenance_equipment.py index 9f3cefba..467989b7 100644 --- a/sf_tool_management/models/maintenance_equipment.py +++ b/sf_tool_management/models/maintenance_equipment.py @@ -79,6 +79,9 @@ class SfMaintenanceEquipment(models.Model): 'functional_tool_name_id': functional_tool_id.id, 'tool_install_time': time }) + if functional_tool_id.current_location_id.name != '制造前': + # 对功能刀具进行出库到生产线 + functional_tool_id.tool_inventory_displacement_out() functional_tool_id.write({ 'max_lifetime_value': data['MaxLife'], 'used_value': data['UseLife'], diff --git a/sf_tool_management/views/tool_base_views.xml b/sf_tool_management/views/tool_base_views.xml index 239845a4..bf5fe0fb 100644 --- a/sf_tool_management/views/tool_base_views.xml +++ b/sf_tool_management/views/tool_base_views.xml @@ -152,8 +152,8 @@ - - + + @@ -203,7 +203,7 @@ - +