diff --git a/sf_manufacturing/controllers/controllers.py b/sf_manufacturing/controllers/controllers.py
index 81186703..8e835e81 100644
--- a/sf_manufacturing/controllers/controllers.py
+++ b/sf_manufacturing/controllers/controllers.py
@@ -231,6 +231,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):
@@ -269,3 +307,26 @@ class Manufacturing_Connect(http.Controller):
res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
logging.info('NCProgDolod error:%s' % e)
return json.JSONEncoder().encode(res)
+
+ @http.route('/AutoDeviceApi/LocationChange', type='json', auth='sf_token', methods=['GET', 'POST'], csrf=False,
+ cors="*")
+ def NCProgDolod(self, **kw):
+ """
+ 库位变更
+ :param kw:
+ :return:
+ """
+ logging.info('NCProgDolod:%s' % kw)
+ try:
+ res = {'Succeed': True, 'Datas': []}
+ datas = request.httprequest.data
+ ret = json.loads(datas)
+ if ret:
+ print(ret)
+ return json.JSONEncoder().encode(res)
+ else:
+ res = {'Succeed': False, 'ErrorCode': 201, 'Error': '未传RfidCode字段'}
+ except Exception as e:
+ res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
+ 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 @@
+
+
+
+
+
+
+
+
+