diff --git a/sf_manufacturing/controllers/controllers.py b/sf_manufacturing/controllers/controllers.py
index e542002c..7b050139 100644
--- a/sf_manufacturing/controllers/controllers.py
+++ b/sf_manufacturing/controllers/controllers.py
@@ -110,15 +110,15 @@ class Manufacturing_Connect(http.Controller):
logging.info('RfidCode:%s' % ret['RfidCode'])
if 'RfidCode' in ret:
workorder = request.env['mrp.workorder'].sudo().search(
- [('routing_type', '=', '前置三元定位检测'), ('rfid_code', '=', ret['RfidCode'])])
+ [('routing_type', '=', '装夹预调'), ('rfid_code', '=', ret['RfidCode'])])
if workorder:
for item in workorder:
if item.material_center_point:
- offset = item.material_center_point.strip('()').split(',')
+ offset = item.material_center_point[1:-1].split(",")
res['Datas'].append({
'XOffset': 0 if not item.material_center_point else offset[0],
'YOffset': 0 if not item.material_center_point else offset[1],
- 'ZOffet': 0 if not item.material_center_point else offset[3],
+ 'ZOffet': 0 if not item.material_center_point else offset[2],
'COffset': 'G54' if not item.X_deviation_angle else item.X_deviation_angle
})
else:
@@ -195,21 +195,6 @@ class Manufacturing_Connect(http.Controller):
res = {'Succeed': True, 'Datas': []}
datas = request.httprequest.data
ret = json.loads(datas)
- if not ret['BillId']:
- res = {'Succeed': False, 'ErrorCode': 202, 'Error': '未传制造订单号'}
- return json.JSONEncoder().encode(res)
- if not ret['CraftId']:
- res = {'Succeed': False, 'ErrorCode': 202, 'Error': '未传工序名称'}
- return json.JSONEncoder().encode(res)
- if not ret['DeviceId']:
- res = {'Succeed': False, 'ErrorCode': 202, 'Error': '未传设备号'}
- return json.JSONEncoder().encode(res)
- if not ret['Quality']:
- res = {'Succeed': False, 'ErrorCode': 202, 'Error': '未传检测结果'}
- return json.JSONEncoder().encode(res)
- if not ret['ReportPaht']:
- res = {'Succeed': False, 'ErrorCode': 202, 'Error': '未传检查报告文件(地址)'}
- return json.JSONEncoder().encode(res)
production_id = ret['BillId']
routing_type = ret['CraftId']
request.env['mrp.workorder'].sudo().search(
@@ -219,6 +204,44 @@ class Manufacturing_Connect(http.Controller):
logging.info('PartQualityInspect error:%s' % e)
return json.JSONEncoder().encode(res)
+ @http.route('/AutoDeviceApi/CMMProgDolod', type='json', auth='sf_token', methods=['GET', 'POST'], csrf=False,
+ cors="*")
+ def CMMProgDolod(self, **kw):
+ """
+ 中控系统传递RFID编号给MES,获取测量程序文件。Ftp下载文件
+ :param kw:
+ :return:
+ """
+ logging.info('CMMProgDolod:%s' % kw)
+ try:
+ res = {'Succeed': True, 'Datas': []}
+ datas = request.httprequest.data
+ ret = json.loads(datas)
+ if 'RfidCode' in ret:
+ logging.info('RfidCode:%s' % ret['RfidCode'])
+ workorder = request.env['mrp.workorder'].sudo().search(
+ [('rfid_code', '=', ret['RfidCode']), ('routing_type', '=', 'CNC加工')])
+ if workorder:
+ for item in workorder.cmm_ids:
+ if item.program_date is not False:
+ program_date = item.program_date.strftime("%Y-%m-%d %H:%M:%S")
+ program_date_str = request.env['sf.sync.common'].sudo().get_add_time(program_date)
+ res['Datas'].append({
+ 'CraftId': workorder.id,
+ 'CraftKey': workorder.name,
+ 'ProgramDate': '' if not item.program_date else program_date_str,
+ 'ProgramPath': item.program_path,
+ 'PostProcessing': item.post_processing_name,
+ })
+ else:
+ res = {'Succeed': False, 'ErrorCode': 203, 'Error': '暂无工单及对应的CNC程序数据'}
+ else:
+ res = {'Succeed': False, 'ErrorCode': 201, 'Error': '未传RfidCode字段'}
+ except Exception as e:
+ res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
+ logging.info('CMMProgDolod error:%s' % e)
+ return json.JSONEncoder().encode(res)
+
@http.route('/AutoDeviceApi/NCProgDolod', type='json', auth='sf_token', methods=['GET', 'POST'], csrf=False,
cors="*")
def NCProgDolod(self, **kw):
@@ -258,9 +281,11 @@ class Manufacturing_Connect(http.Controller):
logging.info('NCProgDolod error:%s' % e)
return json.JSONEncoder().encode(res)
- @http.route('/AutoDeviceApi/LocationChange', type='json', auth='none', methods=['GET', 'POST'], csrf=False,
+
+ @http.route('/AutoDeviceApi/LocationChange', type='json', auth='sf_token', methods=['GET', 'POST'], csrf=False,
cors="*")
- def LocationChange(self, **kw):
+ def NCProgDolod(self, **kw):
+
"""
库位变更
:param kw:
@@ -281,6 +306,3 @@ class Manufacturing_Connect(http.Controller):
logging.info('NCProgDolod error:%s' % e)
return json.JSONEncoder().encode(res)
-
-
-
diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py
index f349b6e0..056ef240 100644
--- a/sf_manufacturing/models/mrp_workorder.py
+++ b/sf_manufacturing/models/mrp_workorder.py
@@ -97,7 +97,8 @@ class ResMrpWorkOrder(models.Model):
X_deviation_angle = fields.Integer(string="X轴偏差度", default=0)
test_results = fields.Selection([("合格", "合格"), ("返工", "返工"), ("报废", "报废")], default='合格',
string="检测结果")
- cnc_ids = fields.One2many("sf.cnc.processing", 'workorder_id', string="CNC加工")
+ cnc_ids = fields.One2many("sf.cnc.processing", 'workorder_id', string="CNC加工程序")
+ cmm_ids = fields.One2many("sf.cmm.program", 'workorder_id', string="CMM程序")
tray_code = fields.Char(string="托盘编码")
glb_file = fields.Binary("glb模型文件")
is_subcontract = fields.Boolean(string='是否外协')
@@ -130,7 +131,6 @@ class ResMrpWorkOrder(models.Model):
total_wight = fields.Float(string="总重量")
maximum_carrying_weight = fields.Char(string="最大承载重量[kg]")
maximum_clamping_force = fields.Char(string="最大夹持力[n]")
- production_line_id = fields.Many2one('sf.production.line', string="生产线")
preset_program_information = fields.Char(string="预调程序信息")
workpiece_delivery_ids = fields.One2many('sf.workpiece.delivery', 'workorder_id', '工件配送')
is_delivery = fields.Boolean('是否配送完成', default=False)
@@ -865,3 +865,15 @@ class WorkPieceDelivery(models.Model):
(obj.task_completion_time - obj.task_delivery_time).total_seconds() / 60.0, 2)
else:
obj.delivery_duration = 0.0
+
+
+class CMMprogram(models.Model):
+ _name = 'sf.cmm.program'
+ _description = "CMM程序"
+
+ program_path = fields.Char('程序文件路径')
+ post_processing_name = fields.Char('后处理名称')
+ program_date = fields.Datetime('程序日期')
+ workorder_id = fields.Many2one('mrp.workorder', string="工单")
+
+
diff --git a/sf_manufacturing/security/ir.model.access.csv b/sf_manufacturing/security/ir.model.access.csv
index fb218c88..c3fceb02 100644
--- a/sf_manufacturing/security/ir.model.access.csv
+++ b/sf_manufacturing/security/ir.model.access.csv
@@ -1,6 +1,8 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_sf_cnc_processing,sf_cnc_processing,model_sf_cnc_processing,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_cnc_processing_manager,sf_cnc_processing,model_sf_cnc_processing,sf_base.group_sf_mrp_manager,1,1,1,0
+access_sf_cmm_program_group_sf_mrp_user,sf_cmm_program_group_sf_mrp_user,model_sf_cmm_program,sf_base.group_sf_mrp_user,1,0,0,0
+access_sf_cmm_program_group_sf_mrp_manager,sf_cmm_program_group_sf_mrp_manager,model_sf_cmm_program,sf_base.group_sf_mrp_manager,1,0,0,0
access_sf_model_type,sf_model_type,model_sf_model_type,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_model_type_manager,sf_model_type,model_sf_model_type,sf_base.group_sf_mrp_manager,1,1,1,0
access_sf_model_type_group_sale_director,sf_model_type_group_sale_director,model_sf_model_type,sf_base.group_sale_director,1,0,0,0
@@ -119,7 +121,7 @@ access_sf_embryo_model_type_routing_sort,sf.embryo.model.type.routing.sort,model
access_sf_surface_technics_model_type_routing_sort,sf.surface_technics.model.type.routing.sort,model_sf_surface_technics_model_type_routing_sort,sf_base.group_plan_dispatch,1,0,0,0
access_mrp_workcenter_capacity,mrp.workcenter.capacity,mrp.model_mrp_workcenter_capacity,sf_base.group_plan_dispatch,1,0,0,0
access_sf_cnc_processing,sf.cnc.processing,model_sf_cnc_processing,sf_base.group_plan_dispatch,1,0,0,0
-
+access_sf_cmm_program_group_plan_dispatch,sf_cmm_program_group_plan_dispatch,model_sf_cmm_program,sf_base.group_plan_dispatch,1,0,0,0
access_mrp_workcenter_productivity,mrp.workcenter.productivity,mrp.model_mrp_workcenter_productivity,sf_base.group_plan_dispatch,1,0,0,0
diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml
index 78313ad2..2531b7f7 100644
--- a/sf_manufacturing/views/mrp_workorder_view.xml
+++ b/sf_manufacturing/views/mrp_workorder_view.xml
@@ -461,6 +461,15 @@
+
+
+
+
+
+
+
+
+