修复返工(CNC加工)
This commit is contained in:
@@ -204,7 +204,7 @@ class MrpProduction(models.Model):
|
|||||||
if rp.programming_no == item['programming_no']:
|
if rp.programming_no == item['programming_no']:
|
||||||
rp.write({'programming_state': '已编程未下发' if item[
|
rp.write({'programming_state': '已编程未下发' if item[
|
||||||
'programming_state'] == '已编程' else '编程中'})
|
'programming_state'] == '已编程' else '编程中'})
|
||||||
logging.info('rp:' % rp.name)
|
logging.info('rp:%s' % rp.name)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
return item
|
return item
|
||||||
@@ -792,6 +792,8 @@ class MrpProduction(models.Model):
|
|||||||
program_to_production_names[programming_no] = [production.name for production in program_production]
|
program_to_production_names[programming_no] = [production.name for production in program_production]
|
||||||
for production in self:
|
for production in self:
|
||||||
if production.programming_no in program_to_production_names:
|
if production.programming_no in program_to_production_names:
|
||||||
|
productions_not_delivered = self.env['mrp.production'].search(
|
||||||
|
[('programming_no', '=', production.programming_no), ('programming_state', '=', '已编程未下发')])
|
||||||
rework_workorder = production.workorder_ids.filtered(lambda m: m.state == 'rework')
|
rework_workorder = production.workorder_ids.filtered(lambda m: m.state == 'rework')
|
||||||
if rework_workorder:
|
if rework_workorder:
|
||||||
for rework_item in rework_workorder:
|
for rework_item in rework_workorder:
|
||||||
@@ -801,6 +803,7 @@ class MrpProduction(models.Model):
|
|||||||
if not pending_workorder.cnc_ids:
|
if not pending_workorder.cnc_ids:
|
||||||
production.get_new_program(rework_item.processing_panel)
|
production.get_new_program(rework_item.processing_panel)
|
||||||
production.write({'state': 'progress', 'programming_state': '已编程', 'is_rework': False})
|
production.write({'state': 'progress', 'programming_state': '已编程', 'is_rework': False})
|
||||||
|
productions_not_delivered.write({'programming_state': '已编程', 'is_rework': False})
|
||||||
|
|
||||||
# 从cloud获取重新编程过的最新程序
|
# 从cloud获取重新编程过的最新程序
|
||||||
def get_new_program(self, processing_panel):
|
def get_new_program(self, processing_panel):
|
||||||
@@ -814,17 +817,17 @@ class MrpProduction(models.Model):
|
|||||||
r = r.json()
|
r = r.json()
|
||||||
result = json.loads(r['result'])
|
result = json.loads(r['result'])
|
||||||
if result['status'] == 1:
|
if result['status'] == 1:
|
||||||
program_path_tmp_panel = os.path.join('/tmp', result['folder_name'], 'return', processing_panel)
|
# program_path_tmp_panel = os.path.join('/tmp', result['folder_name'], 'return', processing_panel)
|
||||||
if os.path.exists(program_path_tmp_panel):
|
# if os.path.exists(program_path_tmp_panel):
|
||||||
files_r = os.listdir(program_path_tmp_panel)
|
# files_r = os.listdir(program_path_tmp_panel)
|
||||||
if files_r:
|
# if files_r:
|
||||||
for file_name in files_r:
|
# for file_name in files_r:
|
||||||
file_path = os.path.join(program_path_tmp_panel, file_name)
|
# file_path = os.path.join(program_path_tmp_panel, file_name)
|
||||||
os.remove(file_path)
|
# os.remove(file_path)
|
||||||
download_state = self.env['sf.cnc.processing'].download_file_tmp(result['folder_name'],
|
# download_state = self.env['sf.cnc.processing'].download_file_tmp(result['folder_name'],
|
||||||
processing_panel)
|
# processing_panel)
|
||||||
if download_state is False:
|
# if download_state is False:
|
||||||
raise UserError('编程单号为%s的CNC程序文件从FTP拉取失败' % (self.programming_no))
|
# raise UserError('编程单号为%s的CNC程序文件从FTP拉取失败' % (self.programming_no))
|
||||||
productions = self.env['mrp.production'].search(
|
productions = self.env['mrp.production'].search(
|
||||||
[('programming_no', '=', self.programming_no), ('state', 'not in', ('cancel', 'done'))])
|
[('programming_no', '=', self.programming_no), ('state', 'not in', ('cancel', 'done'))])
|
||||||
if productions:
|
if productions:
|
||||||
@@ -838,8 +841,8 @@ class MrpProduction(models.Model):
|
|||||||
panel_workorder.cnc_ids.sudo().unlink()
|
panel_workorder.cnc_ids.sudo().unlink()
|
||||||
self.env['sf.cam.work.order.program.knife.plan'].sudo().unlink_cam_plan(
|
self.env['sf.cam.work.order.program.knife.plan'].sudo().unlink_cam_plan(
|
||||||
productions)
|
productions)
|
||||||
# program_path_tmp_panel = os.path.join('C://Users//43484//Desktop//fsdownload//test',
|
program_path_tmp_panel = os.path.join('C://Users//43484//Desktop//fsdownload//test',
|
||||||
# processing_panel)
|
processing_panel)
|
||||||
logging.info('program_path_tmp_panel:%s' % program_path_tmp_panel)
|
logging.info('program_path_tmp_panel:%s' % program_path_tmp_panel)
|
||||||
files_panel = os.listdir(program_path_tmp_panel)
|
files_panel = os.listdir(program_path_tmp_panel)
|
||||||
if files_panel:
|
if files_panel:
|
||||||
|
|||||||
@@ -726,6 +726,11 @@ class ResMrpWorkOrder(models.Model):
|
|||||||
re_work = self.env['mrp.workorder'].search([('production_id', '=', workorder.production_id.id),
|
re_work = self.env['mrp.workorder'].search([('production_id', '=', workorder.production_id.id),
|
||||||
('processing_panel', '=', workorder.processing_panel),
|
('processing_panel', '=', workorder.processing_panel),
|
||||||
('is_rework', '=', True), ('state', 'in', ['done', 'rework'])])
|
('is_rework', '=', True), ('state', 'in', ['done', 'rework'])])
|
||||||
|
cnc_workorder = self.env['mrp.workorder'].search(
|
||||||
|
[('production_id', '=', workorder.production_id.id),
|
||||||
|
('processing_panel', '=', workorder.processing_panel),
|
||||||
|
('routing_type', '=', 'CNC加工'), ('state', '=', 'done'),
|
||||||
|
('test_results', '=', '返工')])
|
||||||
if workorder.state not in ['cancel', 'progress', 'rework']:
|
if workorder.state not in ['cancel', 'progress', 'rework']:
|
||||||
if workorder.production_id.state == 'rework':
|
if workorder.production_id.state == 'rework':
|
||||||
logging.info('len(re_work):%s' % len(re_work))
|
logging.info('len(re_work):%s' % len(re_work))
|
||||||
@@ -736,29 +741,34 @@ class ResMrpWorkOrder(models.Model):
|
|||||||
logging.info('面:%s' % workorder.processing_panel)
|
logging.info('面:%s' % workorder.processing_panel)
|
||||||
logging.info('编程状态:%s' % workorder.production_id.programming_state)
|
logging.info('编程状态:%s' % workorder.production_id.programming_state)
|
||||||
logging.info('制造状态:%s' % workorder.production_id.state)
|
logging.info('制造状态:%s' % workorder.production_id.state)
|
||||||
if re_work:
|
|
||||||
if workorder.routing_type == '装夹预调' and workorder.state not in ['done', 'rework',
|
if workorder.routing_type == '装夹预调' and workorder.state not in ['done', 'rework',
|
||||||
'cancel'] and workorder.is_rework is False:
|
'cancel']:
|
||||||
if workorder.production_id.programming_state == '已编程':
|
# # 有返工工单
|
||||||
|
# if re_work:
|
||||||
|
# 新工单
|
||||||
|
if workorder.is_rework is False:
|
||||||
|
if workorder.production_id.programming_state == '已编程' and workorder.production_id.is_rework is False:
|
||||||
|
if re_work:
|
||||||
workorder.state = 'ready'
|
workorder.state = 'ready'
|
||||||
else:
|
else:
|
||||||
if workorder.production_id.is_rework is True:
|
if workorder.production_id.is_rework is True:
|
||||||
|
if re_work or cnc_workorder:
|
||||||
workorder.state = 'waiting'
|
workorder.state = 'waiting'
|
||||||
if workorder.routing_type == 'CNC加工' and workorder.state not in ['done', 'rework', 'cancel']:
|
|
||||||
|
elif workorder.routing_type == 'CNC加工' and workorder.state not in ['done', 'rework', 'cancel']:
|
||||||
pre_workorder = self.env['mrp.workorder'].search(
|
pre_workorder = self.env['mrp.workorder'].search(
|
||||||
[('production_id', '=', workorder.production_id.id),
|
[('production_id', '=', workorder.production_id.id),
|
||||||
('processing_panel', '=', workorder.processing_panel),
|
('processing_panel', '=', workorder.processing_panel),
|
||||||
('routing_type', '=', '装夹预调'), ('state', '=', 'done')])
|
('routing_type', '=', '装夹预调'), ('state', '=', 'done')])
|
||||||
if pre_workorder:
|
if pre_workorder:
|
||||||
|
if re_work:
|
||||||
workorder.state = 'waiting'
|
workorder.state = 'waiting'
|
||||||
if workorder.routing_type == '解除装夹' and workorder.state not in ['done', 'rework', 'cancel']:
|
elif workorder.routing_type == '解除装夹' and workorder.state not in ['done', 'rework', 'cancel']:
|
||||||
cnc_workorder = self.env['mrp.workorder'].search(
|
|
||||||
[('production_id', '=', workorder.production_id.id),
|
|
||||||
('processing_panel', '=', workorder.processing_panel),
|
|
||||||
('routing_type', '=', 'CNC加工'), ('state', '=', 'done'),
|
|
||||||
('test_results', '=', '返工')])
|
|
||||||
if cnc_workorder:
|
if cnc_workorder:
|
||||||
workorder.state = 'waiting'
|
workorder.state = 'waiting'
|
||||||
|
# else:
|
||||||
|
# if workorder.production_id.is_rework is True:
|
||||||
|
# workorder.state = 'waiting'
|
||||||
elif workorder.production_id.state == 'progress':
|
elif workorder.production_id.state == 'progress':
|
||||||
logging.info('len(re_work):%s' % len(re_work))
|
logging.info('len(re_work):%s' % len(re_work))
|
||||||
logging.info('工序:%s' % workorder.routing_type)
|
logging.info('工序:%s' % workorder.routing_type)
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import os
|
|||||||
from odoo import models, fields, api, _
|
from odoo import models, fields, api, _
|
||||||
from odoo.exceptions import ValidationError
|
from odoo.exceptions import ValidationError
|
||||||
from odoo.modules import get_resource_path
|
from odoo.modules import get_resource_path
|
||||||
from OCC.Extend.DataExchange import read_step_file
|
# from OCC.Extend.DataExchange import read_step_file
|
||||||
from OCC.Extend.DataExchange import write_stl_file
|
# from OCC.Extend.DataExchange import write_stl_file
|
||||||
|
|
||||||
|
|
||||||
class ResProductMo(models.Model):
|
class ResProductMo(models.Model):
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ from datetime import datetime
|
|||||||
import requests
|
import requests
|
||||||
from odoo import http
|
from odoo import http
|
||||||
from odoo.http import request
|
from odoo.http import request
|
||||||
from OCC.Extend.DataExchange import read_step_file
|
# from OCC.Extend.DataExchange import read_step_file
|
||||||
from OCC.Extend.DataExchange import write_stl_file
|
# from OCC.Extend.DataExchange import write_stl_file
|
||||||
from odoo import models, fields, api
|
from odoo import models, fields, api
|
||||||
from odoo.modules import get_resource_path
|
from odoo.modules import get_resource_path
|
||||||
from odoo.exceptions import ValidationError, UserError
|
from odoo.exceptions import ValidationError, UserError
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import os
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from stl import mesh
|
from stl import mesh
|
||||||
# from OCC.Core.GProp import GProp_GProps
|
# from OCC.Core.GProp import GProp_GProps
|
||||||
from OCC.Extend.DataExchange import read_step_file
|
# from OCC.Extend.DataExchange import read_step_file
|
||||||
from OCC.Extend.DataExchange import write_stl_file
|
# from OCC.Extend.DataExchange import write_stl_file
|
||||||
from odoo.addons.sf_base.commons.common import Common
|
from odoo.addons.sf_base.commons.common import Common
|
||||||
from odoo import models, fields, api
|
from odoo import models, fields, api
|
||||||
from odoo.modules import get_resource_path
|
from odoo.modules import get_resource_path
|
||||||
|
|||||||
Reference in New Issue
Block a user