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

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) logging.info('cron_get_programming_state error:%s' % e)
# 编程单更新 # 编程单更新
def update_programming_state(self): # 增加触发时间参数
def update_programming_state(self, trigger_time=None):
try: try:
manufacturing_type = 'rework' manufacturing_type = 'rework'
if self.is_scrap: if self.is_scrap:
@@ -613,6 +614,45 @@ class MrpProduction(models.Model):
self.write({'is_rework': True}) self.write({'is_rework': True})
else: else:
raise UserError(ret['message']) 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: except Exception as e:
logging.info('update_programming_state error:%s' % e) logging.info('update_programming_state error:%s' % e)
raise UserError("更新编程单状态失败,请联系管理员") raise UserError("更新编程单状态失败,请联系管理员")
@@ -1609,6 +1649,28 @@ class MrpProduction(models.Model):
# 编程记录 # 编程记录
programming_record_ids = fields.One2many('sf.programming.record', 'production_id') 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): class sf_programming_record(models.Model):
_name = 'sf.programming.record' _name = 'sf.programming.record'

View File

@@ -51,6 +51,6 @@ class ProductionWizard(models.TransientModel):
if self.is_remanufacture is True: if self.is_remanufacture is True:
ret = {'programming_list': [], 'is_reprogramming': self.is_reprogramming} ret = {'programming_list': [], 'is_reprogramming': self.is_reprogramming}
if self.is_reprogramming is True: 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) new_production = self.mrp_production_id.recreateManufacturing(ret)
self.mrp_production_id.write({'remanufacture_production_id': new_production.id}) self.mrp_production_id.write({'remanufacture_production_id': new_production.id})

View File

@@ -284,7 +284,7 @@ class ReworkWizard(models.TransientModel):
'is_rework': False}) 'is_rework': False})
# ==================申请重新编程======================= # ==================申请重新编程=======================
if self.is_reprogramming is True: 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( self.production_id.write(
{'programming_state': '编程中', 'work_state': '编程中', 'state': 'progress'}) {'programming_state': '编程中', 'work_state': '编程中', 'state': 'progress'})
# ================= 返工完成,制造订单状态置为加工中 ============== # ================= 返工完成,制造订单状态置为加工中 ==============

View File

@@ -22,7 +22,7 @@ class sf_programming_reason(models.TransientModel):
def action_confirm(self): def action_confirm(self):
print('self.production_id.programming_state:', self.production_id.programming_state) 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( self.production_id.write(
{'programming_state': '编程中', 'work_state': '编程中'}) {'programming_state': '编程中', 'work_state': '编程中'})

View File

@@ -1,6 +1,7 @@
import json import json
import requests import requests
import logging import logging
from datetime import datetime
from odoo import fields, models, api from odoo import fields, models, api
from odoo.exceptions import ValidationError from odoo.exceptions import ValidationError
from odoo.addons.sf_base.commons.common import Common from odoo.addons.sf_base.commons.common import Common
@@ -196,7 +197,7 @@ class MrpProduction(models.Model):
}) })
# 自动调用重新获取编程的方法 # 自动调用重新获取编程的方法
logging.info('cnc用刀校验到无效刀自动调用重新编程方法update_programming_state()') 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[0].write({'is_rework': False})
# 修改制造订单 编程状态变为“编程中” # 修改制造订单 编程状态变为“编程中”
self.write({'programming_state': '编程中', 'work_state': '编程中'}) self.write({'programming_state': '编程中', 'work_state': '编程中'})