增加多种状态对编程记录的更改

This commit is contained in:
mgw
2025-01-10 09:34:38 +08:00
parent 4b5661108a
commit 8589da1b4d
5 changed files with 68 additions and 5 deletions

View File

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

View File

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

View File

@@ -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'})
# ================= 返工完成,制造订单状态置为加工中 ==============

View File

@@ -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': '编程中'})

View File

@@ -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': '编程中'})