From 59c8631c159552ae350d467d3f9c479cb6224162 Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Wed, 24 Apr 2024 08:58:15 +0800
Subject: [PATCH] =?UTF-8?q?=E5=BA=93=E4=BD=8D=E5=8F=98=E6=9B=B4=E6=8E=A5?=
=?UTF-8?q?=E5=8F=A3=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_manufacturing/controllers/controllers.py | 85 ++++++++++++++-----
sf_manufacturing/models/mrp_production.py | 3 +-
sf_manufacturing/models/mrp_workorder.py | 5 +-
.../views/mrp_production_addional_change.xml | 1 +
sf_plan/models/custom_plan.py | 6 +-
sf_warehouse/models/model.py | 8 +-
6 files changed, 77 insertions(+), 31 deletions(-)
diff --git a/sf_manufacturing/controllers/controllers.py b/sf_manufacturing/controllers/controllers.py
index 64b51b50..b7d3af13 100644
--- a/sf_manufacturing/controllers/controllers.py
+++ b/sf_manufacturing/controllers/controllers.py
@@ -65,6 +65,7 @@ class Manufacturing_Connect(http.Controller):
else:
ProductionLine = False
workorder_ids = request.env['mrp.workorder'].sudo().get_plan_workorder(ProductionLine)
+ # todo 需要筛选出CNC工单
logging.info('RfidCode:%s' % ret)
logging.info('workorder_ids:%s' % workorder_ids)
workorder = request.env['mrp.workorder'].sudo().search(workorder_ids)
@@ -377,37 +378,75 @@ class Manufacturing_Connect(http.Controller):
NewPosition = ret['NewPosition']
OldDeciveStart = ret['OldDeciveStart']
OldDeciveEnd = ret['OldDeciveEnd']
+
+ temp_val_sn_id = None
+ old_localtion = None
# Part、Tool
- if ChangeType == 'Part':
- workorder = request.env['mrp.workorder'].sudo().search(
- [('rfid_code', '=', RfidCode)], limit=1)
- if not workorder:
- res = {'Succeed': False, 'ErrorCode': 202, 'Error': '未根据RfidCode找到该工单'}
+ # if ChangeType == 'Part':
+ # workorder = request.env['mrp.workorder'].sudo().search(
+ # [('rfid_code', '=', RfidCode)], limit=1)
+ # if not workorder:
+ # res = {'Succeed': False, 'ErrorCode': 202, 'Error': '未根据RfidCode找到该工单'}
+ # return json.JSONEncoder().encode(res)
+ # old_localtion = request.env['sf.shelf.location'].sudo().search(
+ # [('barcode', '=', OldPosition)], limit=1)
+ # new_localtion = request.env['sf.shelf.location'].sudo().search(
+ # [('barcode', '=', NewPosition)], limit=1)
+ # if not new_localtion:
+ # res = {'Succeed': False, 'ErrorCode': 202, 'Error': '没有该目标位置'}
+ # return json.JSONEncoder().encode(res)
+ # if old_localtion:
+ # old_localtion.location_status = '空闲'
+ # old_localtion.production_id = False
+ # new_localtion.location_status = '占用'
+ # new_localtion.production_id = workorder.production_id.id
+ # if ChangeType == 'Tool':
+ # old_localtion = request.env['sf.shelf.location'].sudo().search(
+ # [('barcode', '=', OldPosition)], limit=1)
+ # equipment_id = request.env['maintenance.equipment'].sudo().search(
+ # [('name', '=', NewPosition)], limit=1)
+ # equipment_id.register_equipment_tool()
+ # if not equipment_id:
+ # res = {'Succeed': False, 'ErrorCode': 202, 'Error': '没有该目标位置'}
+ # return json.JSONEncoder().encode(res)
+ # if old_localtion:
+ # old_localtion.location_status = '空闲'
+ # old_localtion.production_id = False
+ #
+ # # return json.JSONEncoder().encode(res)
+ # # else:
+ # # res = {'Succeed': False, 'ErrorCode': 201, 'Error': '未传RfidCode字段'}
+ if ChangeType == 'Part' or ChangeType == 'Tool':
+ stock_lot_obj = request.env['stock.lot'].sudo().search(
+ [('rfid', '=', RfidCode)], limit=1)
+ if not stock_lot_obj:
+ res = {'Succeed': False, 'ErrorCode': 202, 'Error': '未根据RfidCode找到该产品'}
return json.JSONEncoder().encode(res)
- old_localtion = request.env['sf.shelf.location'].sudo().search(
- [('barcode', '=', OldPosition)], limit=1)
+ if OldPosition:
+ old_localtion = request.env['sf.shelf.location'].sudo().search(
+ [('barcode', '=', OldPosition)], limit=1)
new_localtion = request.env['sf.shelf.location'].sudo().search(
[('barcode', '=', NewPosition)], limit=1)
if not new_localtion:
res = {'Succeed': False, 'ErrorCode': 202, 'Error': '没有该目标位置'}
return json.JSONEncoder().encode(res)
if old_localtion:
- old_localtion.location_status = '空闲'
- old_localtion.production_id = False
- new_localtion.location_status = '占用'
- new_localtion.production_id = workorder.production_id.id
- if ChangeType == 'Tool':
- old_localtion = request.env['sf.shelf.location'].sudo().search(
- [('barcode', '=', OldPosition)], limit=1)
- equipment_id = request.env['maintenance.equipment'].sudo().search(
- [('name', '=', NewPosition)], limit=1)
- equipment_id.register_equipment_tool()
- if not equipment_id:
- res = {'Succeed': False, 'ErrorCode': 202, 'Error': '没有该目标位置'}
- return json.JSONEncoder().encode(res)
- if old_localtion:
- old_localtion.location_status = '空闲'
- old_localtion.production_id = False
+ temp_val_sn_id = old_localtion.product_sn_id
+ old_localtion.product_sn_id = None
+ new_localtion.product_sn_id = temp_val_sn_id
+ else:
+ new_localtion.product_sn_id = stock_lot_obj.id
+ # if ChangeType == 'Tool':
+ # old_localtion = request.env['sf.shelf.location'].sudo().search(
+ # [('barcode', '=', OldPosition)], limit=1)
+ # equipment_id = request.env['maintenance.equipment'].sudo().search(
+ # [('name', '=', NewPosition)], limit=1)
+ # equipment_id.register_equipment_tool()
+ # if not equipment_id:
+ # res = {'Succeed': False, 'ErrorCode': 202, 'Error': '没有该目标位置'}
+ # return json.JSONEncoder().encode(res)
+ # if old_localtion:
+ # old_localtion.product_sn_id = None
# return json.JSONEncoder().encode(res)
# else:
diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py
index fccc4301..61461dde 100644
--- a/sf_manufacturing/models/mrp_production.py
+++ b/sf_manufacturing/models/mrp_production.py
@@ -113,7 +113,8 @@ class MrpProduction(models.Model):
if production.state == 'progress' and production.schedule_state == '已排':
# production.state = 'pending_processing'
production.state = 'pending_cam'
- elif production.state == 'pending_cam' and production.process_state == '待加工':
+ if production.state == 'progress' and production.schedule_state == '已排' and production.process_state == '待加工':
+ # if production.state == 'pending_cam' and production.process_state == '待加工':
production.state = 'pending_processing'
elif production.state == 'pending_processing' and production.process_state == '待解除装夹':
production.state = 'pending_era_cam'
diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py
index 63c66577..2ce9a2f6 100644
--- a/sf_manufacturing/models/mrp_workorder.py
+++ b/sf_manufacturing/models/mrp_workorder.py
@@ -406,9 +406,10 @@ class ResMrpWorkOrder(models.Model):
work = workorder.production_id.workorder_ids
work.compensation_value_x = eval(self.material_center_point)[0]
work.compensation_value_y = eval(self.material_center_point)[1]
+ work.process_state = '待加工'
+ self.sudo().production_id.state = 'pending_processing'
workorder.button_finish()
- self.process_state = '待加工'
- # self.sudo().production_id.state = 'pending_processing'
+
except Exception as e:
# 重新抛出捕获到的异常信息
raise UserError(str(e))
diff --git a/sf_manufacturing/views/mrp_production_addional_change.xml b/sf_manufacturing/views/mrp_production_addional_change.xml
index 90cee94b..47af7c2d 100644
--- a/sf_manufacturing/views/mrp_production_addional_change.xml
+++ b/sf_manufacturing/views/mrp_production_addional_change.xml
@@ -70,6 +70,7 @@
+
diff --git a/sf_plan/models/custom_plan.py b/sf_plan/models/custom_plan.py
index a9f88c26..42ff8157 100644
--- a/sf_plan/models/custom_plan.py
+++ b/sf_plan/models/custom_plan.py
@@ -294,10 +294,10 @@ class sf_production_plan(models.Model):
print('时间设置失败,请检查是否为工序分配工作中心,%s' % e)
def cancel_production_schedule(self):
- self.date_planned_start = False
- self.date_planned_finished = False
+ self.date_planned_start = None
+ self.date_planned_finished = None
self.state = 'draft'
- self.production_line_id = False
+ self.production_line_id = None
aa = self.env['mrp.production'].sudo().search([('name', '=', self.name)])
aa.schedule_state = '未排'
# self.env['sale.order'].browse(record.production_id.origin).schedule_status = 'to shedule'
diff --git a/sf_warehouse/models/model.py b/sf_warehouse/models/model.py
index 50469284..3a98116a 100644
--- a/sf_warehouse/models/model.py
+++ b/sf_warehouse/models/model.py
@@ -500,8 +500,12 @@ class ShelfLocation(models.Model):
# sf_secret_key = sf_sync_config['sf_secret_key']
# headers = Common.get_headers(self, token, sf_secret_key)
# strurl = sf_sync_config['sf_url'] + self.crea_url
- headers = {'Authorization': 'Ba F2CF5DCC-1A00-4234-9E95-65603F70CC8A'}
- crea_url = 'https://x24467i973.zicp.fun/AutoDeviceApi/GetLocationInfos'
+ config = self.env['res.config.settings'].get_values()
+ # token = sf_sync_config['token'Ba F2CF5DCC-1A00-4234-9E95-65603F70CC8A]
+ headers = {'Authorization': config['center_control_Authorization']}
+ crea_url = config['center_control_url'] + "/AutoDeviceApi/GetLocationInfos"
+ # headers = {'Authorization': 'Ba F2CF5DCC-1A00-4234-9E95-65603'}
+ # crea_url = 'https://x24467i973.zicp.fun/AutoDeviceApi/GetLocationInfos'
# objs_all = self.env['maintenance.equipment'].search([('id', '=', self.id)])
# machine_tool_list = []