Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化

This commit is contained in:
mgw
2024-04-24 14:24:59 +08:00
4 changed files with 35 additions and 54 deletions

View File

@@ -422,7 +422,7 @@ class Manufacturing_Connect(http.Controller):
if 'DeviceId' in ret: if 'DeviceId' in ret:
logging.info('DeviceId:%s' % ret['DeviceId']) logging.info('DeviceId:%s' % ret['DeviceId'])
workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search( workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search(
[('feeder_station_start_id.name', '=', ret['DeviceId']), [('feeder_station_destination_id.name', '=', ret['DeviceId']),
('status', '=', '已配送'), ('type', '=', '上产线')], order='id asc') ('status', '=', '已配送'), ('type', '=', '上产线')], order='id asc')
if workpiece_delivery: if workpiece_delivery:
for wd in workpiece_delivery: for wd in workpiece_delivery:
@@ -457,7 +457,7 @@ class Manufacturing_Connect(http.Controller):
if 'DeviceId' in ret: if 'DeviceId' in ret:
logging.info('DeviceId:%s' % ret['DeviceId']) logging.info('DeviceId:%s' % ret['DeviceId'])
workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search( workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search(
[('feeder_station_start_id.name', '=', ret['DeviceId']), [('feeder_station_destination_id.name', '=', ret['DeviceId']),
('status', '=', '已配送'), ('type', '=', '下产线')], order='id asc') ('status', '=', '已配送'), ('type', '=', '下产线')], order='id asc')
if workpiece_delivery: if workpiece_delivery:
for wd in workpiece_delivery: for wd in workpiece_delivery:

View File

@@ -26,15 +26,10 @@ class Workpiece(http.Controller):
if ret['method'] == 'end': if ret['method'] == 'end':
logging.info('backfeed-ret:%s' % ret['reqCode'].rsplit('-', 1)[0]) logging.info('backfeed-ret:%s' % ret['reqCode'].rsplit('-', 1)[0])
workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search( workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search(
[('production_id.name', '=', ret['reqCode'].rsplit('-', 1)[0]), ('agv_task_code'), '=', [('production_id.name', '=', ret['reqCode'].rsplit('-', 1)[0]), ('delivery_num', '=',
ret['taskCode']]) ret['reqCode'])])
if workpiece_delivery: if workpiece_delivery:
workpiece_delivery.write({'status': '已配送', 'task_completion_time': ret['reqTime']}) workpiece_delivery.write({'status': '已配送', 'task_completion_time': ret['reqTime']})
if workpiece_delivery.type == '下产线':
workpiece_delivery_clear = request.env['sf.workpiece.delivery'].sudo().search(
[('production_id.name', '=', ret['reqCode']), ('type', '=', '运送空料架')])
if workpiece_delivery_clear:
workpiece_delivery_clear._delivery_avg()
else: else:
res = {'Succeed': False, 'ErrorCode': 203, 'Error': '该reqCode暂未查到对应的工件配送记录'} res = {'Succeed': False, 'ErrorCode': 203, 'Error': '该reqCode暂未查到对应的工件配送记录'}
else: else:

View File

@@ -829,7 +829,7 @@ class ResMrpWorkOrder(models.Model):
# 根据中控系统提供的检测文件地址去ftp里对应的制造订单里获取 # 根据中控系统提供的检测文件地址去ftp里对应的制造订单里获取
def get_detection_file(self, workorder, reportPath): def get_detection_file(self, workorder, reportPath):
if reportPath.startswith('/'): if reportPath.startswith('/'):
reportPath = reportPath[1:] reportPath = reportPath[4:]
serverdir = os.path.join('/tmp', reportPath) serverdir = os.path.join('/tmp', reportPath)
logging.info('get_detection_file-serverdir:%s' % serverdir) logging.info('get_detection_file-serverdir:%s' % serverdir)
serverdir_prefix = os.path.dirname(serverdir) serverdir_prefix = os.path.dirname(serverdir)
@@ -980,16 +980,26 @@ class SfWorkOrderBarcodes(models.Model):
def on_barcode_scanned(self, barcode): def on_barcode_scanned(self, barcode):
workorder = self.env['mrp.workorder'].browse(self.ids) workorder = self.env['mrp.workorder'].browse(self.ids)
# workorder = self.env['mrp.workorder'].search( workorder_preset = self.env['mrp.workorder'].search(
# [('routing_type', '=', '装夹预调'), ('production_id', '=', self.production_id.id)]) [('routing_type', '=', '装夹预调'), ('rfid_code', '=', barcode)])
workorder_old = self.env['mrp.workorder'].search([('rfid_code', '=', barcode)]) # workorder_old = self.env['mrp.workorder'].search([('rfid_code', '=', barcode)])
if workorder_old: if len(workorder_preset) <= 4:
raise UserError('该托盘已绑定【%s】制造订单,请先解除绑定!!!' % workorder_old.production_id.name) workpiece_ids = []
for item in workorder_preset:
if item.production_line_id.id == workorder.production_line_id.id:
workpiece_ids.append(item.production_id.id)
else:
raise UserError('工件生产线不一致,请重新确认')
if workpiece_ids:
workorder.workpiece_delivery_ids.write({'sametransport_production_ids': [(6, 0, workpiece_ids)]})
# raise UserError('该托盘已绑定【%s】制造订单请先解除绑定' % workorder_old.production_id.name)
if workorder: if workorder:
if workorder.routing_type == '装夹预调': if workorder.routing_type == '装夹预调':
if workorder.state in ['done']: if workorder.state in ['done']:
work_state = {'done': '已完工'} work_state = {'done': '已完工'}
raise UserError('装夹%s,请勿重复扫码' % work_state.get(workorder.state)) raise UserError('装夹%s,请勿重复扫码' % work_state.get(workorder.state))
lots = self.env['stock.lot'].sudo().search([('rfid', '=', barcode)]) lots = self.env['stock.lot'].sudo().search([('rfid', '=', barcode)])
logging.info("托盘信息:%s" % lots) logging.info("托盘信息:%s" % lots)
if lots: if lots:
@@ -1013,38 +1023,6 @@ class SfWorkOrderBarcodes(models.Model):
logging.info("Rfid绑定成功") logging.info("Rfid绑定成功")
self.process_state = '待检测' self.process_state = '待检测'
else: else:
embryo_stock_lot = self.env['stock.lot'].search([('name', '=', barcode)])
if embryo_stock_lot:
embryo_stock_move_line = self.env['stock.move.line'].search(
[('product_id', '=', embryo_stock_lot.product_id.id),
('reference', '=', workorder.production_id.name),
('lot_id', '=', embryo_stock_lot.id),
('product_category_name', '=', '坯料')])
if embryo_stock_move_line:
bom_production = self.env['mrp.production'].search(
[('product_id', '=', embryo_stock_lot.product_id.id),
('origin', '=', workorder.production_id.name)], limit=1, order='id asc')
workpiece_delivery = self.env['sf.workpiece.delivery'].search(
[('workorder_id', '=', workorder.id)], limit=1, order='id asc')
if workpiece_delivery:
embryo_workpiece_code = workpiece_delivery.workpiece_code
if bom_production:
if workpiece_delivery.workpiece_code and bom_production.name not in \
workpiece_delivery.workpiece_code:
embryo_workpiece_code = workpiece_delivery.workpiece_code + ',' + \
bom_production.name
if not workpiece_delivery.workpiece_code:
embryo_workpiece_code = bom_production.name
workpiece_delivery.write({'workpiece_code': embryo_workpiece_code})
else:
raise UserError('工件生产线不一致,请重新确认')
else:
workorder_rfid = self.env['mrp.workorder'].search(
[('production_id', '=', workorder.production_id.id)])
if workorder_rfid:
for item in workorder_rfid:
if item.state == "progress":
item.write({'rfid_code': barcode})
raise UserError('该托盘信息不存在!!!') raise UserError('该托盘信息不存在!!!')
# stock_move_line = self.env['stock.move.line'].search([('lot_name', '=', barcode)]) # stock_move_line = self.env['stock.move.line'].search([('lot_name', '=', barcode)])
# if stock_move_line.product_id.categ_type == '夹具': # if stock_move_line.product_id.categ_type == '夹具':
@@ -1108,7 +1086,8 @@ class WorkPieceDelivery(models.Model):
string='目的生产线', readonly=True, string='目的生产线', readonly=True,
store=True) store=True)
plan_start_processing_time = fields.Datetime('计划开始加工时间', readonly=True) plan_start_processing_time = fields.Datetime('计划开始加工时间', readonly=True)
workpiece_code = fields.Char('同运工件编码') sametransport_production_ids = fields.Many2many('mrp.production', 'rel_workpiece_production', string='同运工件编码')
route_id = fields.Many2one('sf.agv.task.route', '任务路线') route_id = fields.Many2one('sf.agv.task.route', '任务路线')
feeder_station_start_id = fields.Many2one('sf.agv.site', '起点接驳站') feeder_station_start_id = fields.Many2one('sf.agv.site', '起点接驳站')
feeder_station_destination_id = fields.Many2one('sf.agv.site', '目的接驳站') feeder_station_destination_id = fields.Many2one('sf.agv.site', '目的接驳站')
@@ -1125,7 +1104,6 @@ class WorkPieceDelivery(models.Model):
string='上/下产线', default='待上产线') string='上/下产线', default='待上产线')
cnc_program_down_state = fields.Selection([('待下发', '待下发'), ('已下发', '已下发')], cnc_program_down_state = fields.Selection([('待下发', '待下发'), ('已下发', '已下发')],
string='CNC程序下发状态', default='待下发') string='CNC程序下发状态', default='待下发')
agv_task_code = fields.Char('agv任务单号')
@api.onchange('route_id') @api.onchange('route_id')
def onchage_route(self): def onchage_route(self):
@@ -1186,9 +1164,16 @@ class WorkPieceDelivery(models.Model):
ret = ret.json() ret = ret.json()
logging.info('config-ret:%s' % ret) logging.info('config-ret:%s' % ret)
if ret['code'] == 0: if ret['code'] == 0:
if self.production_id.name == ret['reqCode']: if self.delivery_num == ret['reqCode']:
if self.sametransport_production_ids:
for item in self.sametransport_production_ids:
sametransport_workpiece = self.search(
[('production_id', '=', item.id), ('type', '=', '上产线')])
if sametransport_workpiece:
sametransport_workpiece.write(
{'task_delivery_time': fields.Datetime.now(), 'status': '待配送'})
self.write( self.write(
{'task_delivery_time': fields.Datetime.now(), 'status': '待配送', 'agv_task_code': ret['data']}) {'task_delivery_time': fields.Datetime.now(), 'status': '待配送'})
else: else:
raise UserError(ret['message']) raise UserError(ret['message'])
except Exception as e: except Exception as e:

View File

@@ -429,7 +429,7 @@
<field name="workpiece_delivery_ids"> <field name="workpiece_delivery_ids">
<tree editable="bottom"> <tree editable="bottom">
<field name="production_id" invisible="1"/> <field name="production_id" invisible="1"/>
<field name="workpiece_code"/> <field name="sametransport_production_ids" widget="many2many_tags"/>
<field name="route_id" options="{'no_create': True}"/> <field name="route_id" options="{'no_create': True}"/>
<field name="feeder_station_start_id" readonly="1" force_save="1"/> <field name="feeder_station_start_id" readonly="1" force_save="1"/>
<field name="feeder_station_destination_id" readonly="1" force_save="1"/> <field name="feeder_station_destination_id" readonly="1" force_save="1"/>
@@ -584,7 +584,8 @@
decoration-warning="status == '待下发'" decoration-warning="status == '待下发'"
decoration-danger="status == '待配送'"/> decoration-danger="status == '待配送'"/>
<field name="production_id" string="工件编码"/> <field name="production_id" string="工件编码"/>
<field name="workpiece_code"/> <field name="sametransport_production_ids" widget="many2many_tags"/>
<field name="type" />
<field name="production_line_id" options="{'no_create': True}"/> <field name="production_line_id" options="{'no_create': True}"/>
<field name="route_id" options="{'no_create': True}"/> <field name="route_id" options="{'no_create': True}"/>
<field name="feeder_station_start_id" readonly="1" force_save="1"/> <field name="feeder_station_start_id" readonly="1" force_save="1"/>
@@ -603,7 +604,7 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<search string="工件配送"> <search string="工件配送">
<field name="production_id"/> <field name="production_id"/>
<field name="workpiece_code"/> <field name="sametransport_production_ids" widget="many2many_tags"/>
<field name="feeder_station_start_id"/> <field name="feeder_station_start_id"/>
<field name="production_line_id"/> <field name="production_line_id"/>
<field name="task_delivery_time"/> <field name="task_delivery_time"/>