From 8589da1b4d79c4b0713d9f71b82d4a3430f198bf Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Fri, 10 Jan 2025 09:34:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=9A=E7=A7=8D=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E5=AF=B9=E7=BC=96=E7=A8=8B=E8=AE=B0=E5=BD=95=E7=9A=84?= =?UTF-8?q?=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/mrp_production.py | 64 ++++++++++++++++++- sf_manufacturing/wizard/production_wizard.py | 2 +- sf_manufacturing/wizard/rework_wizard.py | 2 +- .../wizard/sf_programming_reason.py | 2 +- sf_tool_management/models/mrp_workorder.py | 3 +- 5 files changed, 68 insertions(+), 5 deletions(-) diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index 5a2315ab..76bf6a41 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -591,7 +591,8 @@ class MrpProduction(models.Model): logging.info('cron_get_programming_state error:%s' % e) # 编程单更新 - def update_programming_state(self): + # 增加触发时间参数 + def update_programming_state(self, trigger_time=None): try: manufacturing_type = 'rework' if self.is_scrap: @@ -613,6 +614,45 @@ class MrpProduction(models.Model): self.write({'is_rework': True}) else: raise UserError(ret['message']) + + # 增加对编程记录的更新 + cloud_programming = self._cron_get_programming_state() + if manufacturing_type == 'rework': + self.programming_record_ids.create({ + 'number': len(self.programming_record_ids) + 1, + 'production_id': self.id, + 'reason': '返工', + 'programming_method': cloud_programming['programme_way'], + 'current_programming_count': cloud_programming['reprogramming_num'], + 'target_production_id': cloud_programming['production_order_no'], + 'apply_time': trigger_time, + 'send_time': cloud_programming['send_time'], + }) + elif manufacturing_type == 'scrap': + self.programming_record_ids.create({ + 'number': len(self.programming_record_ids) + 1, + 'production_id': self.id, + 'reason': '报废', + 'programming_method': cloud_programming['programme_way'], + 'current_programming_count': cloud_programming['reprogramming_num'], + 'target_production_id': cloud_programming['production_order_no'], + 'apply_time': trigger_time, + 'send_time': cloud_programming['send_time'], + }) + elif manufacturing_type == 'invalid_tool_rework': + self.programming_record_ids.create({ + 'number': len(self.programming_record_ids) + 1, + 'production_id': self.id, + 'reason': '无效功能刀具', + 'programming_method': cloud_programming['programme_way'], + 'current_programming_count': cloud_programming['reprogramming_num'], + 'target_production_id': cloud_programming['production_order_no'], + 'apply_time': trigger_time, + 'send_time': cloud_programming['send_time'], + }) + else: + logging.info('无对应状态,不需更新编程记录') + except Exception as e: logging.info('update_programming_state error:%s' % e) raise UserError("更新编程单状态失败,请联系管理员") @@ -1609,6 +1649,28 @@ class MrpProduction(models.Model): # 编程记录 programming_record_ids = fields.One2many('sf.programming.record', 'production_id') + # 编程单更新 + def re_programming_update_programming_state(self): + try: + res = {'programming_no': self.programming_no, + 'manufacturing_type': ''} + logging.info('res=%s:' % res) + configsettings = self.env['res.config.settings'].get_values() + config_header = Common.get_headers(self, configsettings['token'], configsettings['sf_secret_key']) + url = '/api/intelligent_programming/reset_state_again' + config_url = configsettings['sf_url'] + url + ret = requests.post(config_url, json=res, data=None, headers=config_header) + ret = ret.json() + result = json.loads(ret['result']) + logging.info('update_programming_state-ret:%s' % result) + if result['status'] == 1: + self.write({'is_rework': True}) + else: + raise UserError(ret['message']) + except Exception as e: + logging.info('update_programming_state error:%s' % e) + raise UserError("更新编程单状态失败,请联系管理员") + # 编程记录 class sf_programming_record(models.Model): _name = 'sf.programming.record' diff --git a/sf_manufacturing/wizard/production_wizard.py b/sf_manufacturing/wizard/production_wizard.py index e3e07f80..aa2a4075 100644 --- a/sf_manufacturing/wizard/production_wizard.py +++ b/sf_manufacturing/wizard/production_wizard.py @@ -51,6 +51,6 @@ class ProductionWizard(models.TransientModel): if self.is_remanufacture is True: ret = {'programming_list': [], 'is_reprogramming': self.is_reprogramming} if self.is_reprogramming is True: - self.mrp_production_id.update_programming_state() + self.mrp_production_id.update_programming_state(trigger_time=datetime.now().strftime('%Y-%m-%d %H:%M:%S')) new_production = self.mrp_production_id.recreateManufacturing(ret) self.mrp_production_id.write({'remanufacture_production_id': new_production.id}) diff --git a/sf_manufacturing/wizard/rework_wizard.py b/sf_manufacturing/wizard/rework_wizard.py index 148967be..90697391 100644 --- a/sf_manufacturing/wizard/rework_wizard.py +++ b/sf_manufacturing/wizard/rework_wizard.py @@ -284,7 +284,7 @@ class ReworkWizard(models.TransientModel): 'is_rework': False}) # ==================申请重新编程======================= if self.is_reprogramming is True: - self.production_id.update_programming_state() + self.production_id.update_programming_state(trigger_time=datetime.now().strftime('%Y-%m-%d %H:%M:%S')) self.production_id.write( {'programming_state': '编程中', 'work_state': '编程中', 'state': 'progress'}) # ================= 返工完成,制造订单状态置为加工中 ============== diff --git a/sf_manufacturing/wizard/sf_programming_reason.py b/sf_manufacturing/wizard/sf_programming_reason.py index f3f54e4d..5e7ec706 100644 --- a/sf_manufacturing/wizard/sf_programming_reason.py +++ b/sf_manufacturing/wizard/sf_programming_reason.py @@ -22,7 +22,7 @@ class sf_programming_reason(models.TransientModel): def action_confirm(self): print('self.production_id.programming_state:', self.production_id.programming_state) - self.production_id.update_programming_state() + self.production_id.re_programming_update_programming_state() self.production_id.write( {'programming_state': '编程中', 'work_state': '编程中'}) diff --git a/sf_tool_management/models/mrp_workorder.py b/sf_tool_management/models/mrp_workorder.py index 655d759f..89d37e81 100644 --- a/sf_tool_management/models/mrp_workorder.py +++ b/sf_tool_management/models/mrp_workorder.py @@ -1,6 +1,7 @@ import json import requests import logging +from datetime import datetime from odoo import fields, models, api from odoo.exceptions import ValidationError from odoo.addons.sf_base.commons.common import Common @@ -196,7 +197,7 @@ class MrpProduction(models.Model): }) # 自动调用重新获取编程的方法 logging.info('cnc用刀校验到无效刀自动调用重新编程方法:update_programming_state()') - self[0].update_programming_state() + self[0].update_programming_state(trigger_time=datetime.now().strftime('%Y-%m-%d %H:%M:%S')) self[0].write({'is_rework': False}) # 修改制造订单 编程状态变为“编程中” self.write({'programming_state': '编程中', 'work_state': '编程中'})