调整编程记录生成

This commit is contained in:
mgw
2025-01-14 11:12:07 +08:00
parent fa80d42fc0
commit 40603fea6a
3 changed files with 67 additions and 9 deletions

View File

@@ -15,7 +15,8 @@ class sf_programming_reason(models.TransientModel):
if self._context.get('active_id'):
production = self.env['mrp.production'].browse(self._context.get('active_id'))
res.update({
'reprogramming_count': production._cron_get_programming_state()['reprogramming_num'],
'reprogramming_count': production._cron_get_programming_state()['reprogramming_num'] if
production._cron_get_programming_state().get('reprogramming_num') else 0,
'programming_state': production.programming_state, # 假设制造订单模型中有这个字段
})
return res
@@ -33,7 +34,7 @@ class sf_programming_reason(models.TransientModel):
'reason': self.reason,
'programming_method': cloud_programming['programme_way'],
'current_programming_count': cloud_programming['reprogramming_num'],
'target_production_id': cloud_programming['production_order_no'],
'target_production_id': self.production_id.name,
'apply_time': self._context.get('default_apply_time'),
'send_time': False,
})

View File

@@ -8,8 +8,19 @@
<group>
<label for="reason" string="重新编程原因:"/>
<field name="reason" widget="textarea" nolabel="1"/>
<p class="text-muted">注意:该制造订单产品已申请重新编程次数为<field name="reprogramming_count" readonly="1" nolabel="1" class="oe_inline"/>,且当前编程状态为<field name="programming_state" readonly="1" nolabel="1" class="oe_inline"/></p>
<!-- <p class="text-muted">注意:该制造订单产品已申请重新编程次数为<field name="reprogramming_count" readonly="1" nolabel="1" class="oe_inline"/>,且当前编程状态为<field name="programming_state" readonly="1" nolabel="1" class="oe_inline"/></p> -->
</group>
<div attrs='{"invisible": [("reprogramming_count","=",0)]}'>
<span style='font-weight:bold;'>
注意: 该制造订单产品已申请重新编程次数为<field
name="reprogramming_count" string=""
readonly="1"
style='color:red;'/>,且当前编程状态为
<field name="programming_state" string=""
decoration-warning="programming_state =='编程中'"
decoration-success="programming_state =='已编程'" readonly="1"/>
</span>
</div>
<field name="production_id" invisible="True"/>
<footer>
<button name="action_confirm" string="确认" type="object" class="btn-primary"/>

View File

@@ -111,12 +111,25 @@ class Sf_Mrs_Connect(http.Controller, MultiInheritController):
logging.info(f'对cnc工单的程序用刀进行校验报错{e}')
return json.JSONEncoder().encode(res)
productions_reprogram = ''
if productions:
productions_reprogram = ','.join(productions.mapped('name'))
# 更新编程记录
correct_record_ids_obj = None
correct_production_id = None
rework_record_ids_obj = None
rework_production_id = None
scrap_record_ids_obj = None
scrap_production_id = None
for production in productions:
record_ids_obj = production.programming_record_ids.filtered(
lambda r: r.current_programming_count == ret['reprogramming_num'])
if record_ids_obj:
record_ids_obj.write({'send_time': ret['send_time']})
record_ids_obj.write(
{'send_time': ret['send_time'], 'target_production_id': productions_reprogram})
correct_record_ids_obj = record_ids_obj
correct_production_id = production.id
if ret['reprogramming_num'] == 0:
production.programming_record_ids.create({
'number': 1,
@@ -124,7 +137,7 @@ class Sf_Mrs_Connect(http.Controller, MultiInheritController):
'reason': '首次下发',
'programming_method': ret['programme_way'],
'current_programming_count': ret['reprogramming_num'],
'target_production_id': ret['production_order_no'],
'target_production_id': productions_reprogram,
'apply_time': False,
'send_time': ret['send_time'],
})
@@ -135,7 +148,7 @@ class Sf_Mrs_Connect(http.Controller, MultiInheritController):
'reason': '重置状态',
'programming_method': ret['programme_way'],
'current_programming_count': ret['reprogramming_num'],
'target_production_id': ret['production_order_no'],
'target_production_id': productions_reprogram,
'apply_time': False,
'send_time': ret['send_time'],
})
@@ -146,10 +159,12 @@ class Sf_Mrs_Connect(http.Controller, MultiInheritController):
'reason': '返工',
'programming_method': ret['programme_way'],
'current_programming_count': ret['reprogramming_num'],
'target_production_id': ret['production_order_no'],
'target_production_id': productions_reprogram,
'apply_time': ret['trigger_time'],
'send_time': ret['send_time'],
})
rework_record_ids_obj = production.programming_record_ids
rework_production_id = production.id
elif ret['manufacturing_type'] == 'scrap':
production.programming_record_ids.create({
'number': len(production.programming_record_ids) + 1,
@@ -157,7 +172,7 @@ class Sf_Mrs_Connect(http.Controller, MultiInheritController):
'reason': '报废',
'programming_method': ret['programme_way'],
'current_programming_count': ret['reprogramming_num'],
'target_production_id': ret['production_order_no'],
'target_production_id': productions_reprogram,
'apply_time': ret['trigger_time'],
'send_time': ret['send_time'],
})
@@ -168,13 +183,44 @@ class Sf_Mrs_Connect(http.Controller, MultiInheritController):
'reason': '无效功能刀具',
'programming_method': ret['programme_way'],
'current_programming_count': ret['reprogramming_num'],
'target_production_id': ret['production_order_no'],
'target_production_id': productions_reprogram,
'apply_time': ret['trigger_time'],
'send_time': ret['send_time'],
})
else:
logging.info('无对应状态,不需更新编程记录')
for production in productions:
if correct_record_ids_obj:
if production.id == correct_production_id:
continue
else:
production.programming_record_ids.create({
'number': len(production.programming_record_ids) + 1,
'production_id': production.id,
'reason': correct_record_ids_obj.reason,
'programming_method': correct_record_ids_obj.programming_method,
'current_programming_count': correct_record_ids_obj.current_programming_count,
'target_production_id': correct_record_ids_obj.target_production_id,
'apply_time': correct_record_ids_obj.apply_time,
'send_time': correct_record_ids_obj.send_time,
})
if rework_record_ids_obj:
if production.id == rework_production_id:
continue
else:
production.programming_record_ids.create({
'number': len(production.programming_record_ids) + 1,
'production_id': production.id,
'reason': rework_record_ids_obj.reason,
'programming_method': rework_record_ids_obj.programming_method,
'current_programming_count': rework_record_ids_obj.current_programming_count,
'target_production_id': rework_record_ids_obj.target_production_id,
'apply_time': rework_record_ids_obj.apply_time,
'send_time': rework_record_ids_obj.send_time,
})
res.update({
'production_ids': productions.ids
})