Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
dwsproject
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
dws
dwsproject
Commits
c71f3106
Commit
c71f3106
authored
Nov 15, 2024
by
夏超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 新增零部件数量逻辑
parent
5309270c
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
130 additions
and
30 deletions
+130
-30
jzjx_project/models/inheirt_roke_repair_order.py
+0
-28
jzjx_project/models/inherit_production_task.py
+52
-1
jzjx_project/models/inherit_roke_work_order.py
+73
-0
jzjx_project/models/work_log.py
+1
-1
jzjx_project/views/inherit_roke_production_task.xml
+4
-0
No files found.
jzjx_project/models/inheirt_roke_repair_order.py
View file @
c71f3106
...
@@ -15,31 +15,3 @@ class JzjxInheritRepairOrderLine(models.Model):
...
@@ -15,31 +15,3 @@ class JzjxInheritRepairOrderLine(models.Model):
repair_work_order_id
=
fields
.
Many2one
(
"roke.work.order"
,
string
=
"返修工单"
)
repair_work_order_id
=
fields
.
Many2one
(
"roke.work.order"
,
string
=
"返修工单"
)
is_refix_auto_work_order
=
fields
.
Boolean
(
string
=
"是否自动生产返修单"
)
is_refix_auto_work_order
=
fields
.
Boolean
(
string
=
"是否自动生产返修单"
)
class
JzjxInheritWorkOrder
(
models
.
Model
):
_inherit
=
"roke.work.order"
def
write
(
self
,
vals
):
id_dict
=
{}
for
v
in
self
:
id_dict
[
str
(
v
.
id
)]
=
v
.
state
res
=
super
(
JzjxInheritWorkOrder
,
self
)
.
write
(
vals
)
for
v
in
self
:
old_state
=
id_dict
.
get
(
str
(
v
.
id
),
""
)
if
"state"
not
in
vals
.
keys
():
return
res
state
=
vals
.
get
(
"state"
,
""
)
if
state
in
[
"已完工"
,
"强制完成"
]:
repair_order_id
=
self
.
env
[
"roke.repair.order.line"
]
.
sudo
()
.
search
([
(
"repair_work_order_id"
,
"="
,
self
.
id
)],
limit
=
1
)
if
repair_order_id
:
repair_order_id
.
write
({
"state"
:
"返修完成"
})
repair_order_id
.
order_id
.
write
({
"state"
:
"返修完成"
})
if
state
==
"未完工"
and
old_state
in
[
"暂停"
,
"强制完工"
,
"已完工"
]:
repair_order_id
=
self
.
env
[
"roke.repair.order.line"
]
.
sudo
()
.
search
([
(
"repair_work_order_id"
,
"="
,
self
.
id
)],
limit
=
1
)
if
repair_order_id
:
repair_order_id
.
write
({
"state"
:
"返修中"
})
repair_order_id
.
order_id
.
write
({
"state"
:
"返修中"
})
return
res
jzjx_project/models/inherit_production_task.py
View file @
c71f3106
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
import
http.client
import
http.client
import
mimetypes
import
mimetypes
import
math
from
codecs
import
encode
from
codecs
import
encode
from
odoo
import
models
,
fields
,
api
,
_
from
odoo
import
models
,
fields
,
api
,
_
from
odoo.exceptions
import
ValidationError
from
odoo.exceptions
import
ValidationError
...
@@ -13,7 +14,9 @@ class InheritProductionTask(models.Model):
...
@@ -13,7 +14,9 @@ class InheritProductionTask(models.Model):
taskName
=
fields
.
Char
(
string
=
"任务名称"
)
taskName
=
fields
.
Char
(
string
=
"任务名称"
)
UploadMsg
=
fields
.
Char
(
string
=
"上传状态"
)
UploadMsg
=
fields
.
Char
(
string
=
"上传状态"
)
TaskUUID
=
fields
.
Char
(
string
=
"任务UUID"
)
TaskUUID
=
fields
.
Char
(
string
=
"任务UUID"
)
spare_parts_qty
=
fields
.
Float
(
string
=
"零部件数量"
,
default
=
0
)
spare_parts_qty
=
fields
.
Float
(
string
=
"切割零部件数量"
,
default
=
0
)
press_riveting_qty
=
fields
.
Float
(
string
=
"压铆零部件数量"
,
default
=
0
)
bending_qty
=
fields
.
Float
(
string
=
"折弯零部件数量"
,
default
=
0
)
def
upload_task
(
self
):
def
upload_task
(
self
):
"""
"""
...
@@ -44,3 +47,51 @@ class InheritProductionTask(models.Model):
...
@@ -44,3 +47,51 @@ class InheritProductionTask(models.Model):
self
.
document_ids
=
[(
4
,
a
.
id
)]
self
.
document_ids
=
[(
4
,
a
.
id
)]
return
res
return
res
@api.onchange
(
"routing_id"
,
"product_id"
,
"plan_qty"
,
"type"
,
"spare_parts_qty"
,
"press_riveting_qty"
,
"bending_qty"
)
def
_onchange_routing_id
(
self
):
return
super
(
InheritProductionTask
,
self
)
.
_onchange_routing_id
()
def
_create_work_order_get_values
(
self
,
task
,
routing_line
):
"""
任务生成工单获取工单数据
:return:
"""
res
=
super
(
InheritProductionTask
,
self
)
.
_create_work_order_get_values
(
task
,
routing_line
)
rounding_type
=
self
.
env
[
'ir.config_parameter'
]
.
sudo
()
.
get_param
(
'e_bom.material.demand.rounding'
,
default
=
"精确计算"
)
if
routing_line
.
process_id
.
name
in
"切割"
:
plan_qty
=
task
.
spare_parts_qty
elif
routing_line
.
process_id
.
name
in
"压铆"
:
plan_qty
=
task
.
press_riveting_qty
elif
routing_line
.
process_id
.
name
in
"折弯"
:
plan_qty
=
task
.
bending_qty
else
:
plan_qty
=
task
.
plan_qty
*
routing_line
.
multiple
if
rounding_type
==
"向上取整"
:
plan_qty
=
math
.
ceil
(
plan_qty
)
elif
rounding_type
==
"向下取整"
:
plan_qty
=
int
(
plan_qty
)
res
.
update
({
"plan_qty"
:
plan_qty
})
return
res
def
_get_new_work_order_data
(
self
,
routing_line
,
product
,
plan_qty
,
task_type
):
"""
onchang获取工单数据
:return:
"""
res
=
super
(
InheritProductionTask
,
self
)
.
_get_new_work_order_data
(
routing_line
,
product
,
plan_qty
,
task_type
)
rounding_type
=
self
.
env
[
'ir.config_parameter'
]
.
sudo
()
.
get_param
(
'e_bom.material.demand.rounding'
,
default
=
"精确计算"
)
if
routing_line
.
process_id
.
name
in
"切割"
:
plan_qty
=
self
.
spare_parts_qty
elif
routing_line
.
process_id
.
name
in
"压铆"
:
plan_qty
=
self
.
press_riveting_qty
elif
routing_line
.
process_id
.
name
in
"折弯"
:
plan_qty
=
self
.
bending_qty
else
:
plan_qty
=
self
.
plan_qty
*
routing_line
.
multiple
if
rounding_type
==
"向上取整"
:
plan_qty
=
math
.
ceil
(
plan_qty
)
elif
rounding_type
==
"向下取整"
:
plan_qty
=
int
(
plan_qty
)
res
.
update
({
"plan_qty"
:
plan_qty
})
return
res
jzjx_project/models/inherit_roke_work_order.py
View file @
c71f3106
...
@@ -7,3 +7,76 @@ class InheritWorkOrder(models.Model):
...
@@ -7,3 +7,76 @@ class InheritWorkOrder(models.Model):
document_ids
=
fields
.
Many2many
(
related
=
"task_id.document_ids"
,
string
=
"作业指导"
)
document_ids
=
fields
.
Many2many
(
related
=
"task_id.document_ids"
,
string
=
"作业指导"
)
task_file_ids
=
fields
.
Many2many
(
related
=
"task_id.file_ids"
)
task_file_ids
=
fields
.
Many2many
(
related
=
"task_id.file_ids"
)
repair_task_id
=
fields
.
Many2one
(
'roke.production.task'
,
string
=
"返修上级任务"
)
repair_task_id
=
fields
.
Many2one
(
'roke.production.task'
,
string
=
"返修上级任务"
)
def
write
(
self
,
vals
):
id_dict
=
{}
for
v
in
self
:
id_dict
[
str
(
v
.
id
)]
=
v
.
state
res
=
super
(
InheritWorkOrder
,
self
)
.
write
(
vals
)
for
v
in
self
:
old_state
=
id_dict
.
get
(
str
(
v
.
id
),
""
)
if
"state"
not
in
vals
.
keys
():
return
res
state
=
vals
.
get
(
"state"
,
""
)
if
state
in
[
"已完工"
,
"强制完成"
]:
repair_order_id
=
self
.
env
[
"roke.repair.order.line"
]
.
sudo
()
.
search
([
(
"repair_work_order_id"
,
"="
,
self
.
id
)],
limit
=
1
)
if
repair_order_id
:
repair_order_id
.
write
({
"state"
:
"返修完成"
})
repair_order_id
.
order_id
.
write
({
"state"
:
"返修完成"
})
if
state
==
"未完工"
and
old_state
in
[
"暂停"
,
"强制完工"
,
"已完工"
]:
repair_order_id
=
self
.
env
[
"roke.repair.order.line"
]
.
sudo
()
.
search
([
(
"repair_work_order_id"
,
"="
,
self
.
id
)],
limit
=
1
)
if
repair_order_id
:
repair_order_id
.
write
({
"state"
:
"返修中"
})
repair_order_id
.
order_id
.
write
({
"state"
:
"返修中"
})
return
res
def
_get_production_multiple
(
self
,
previous
):
"""
获取当前生产倍数
:param previous:
:return:
"""
judge
=
"切割"
in
self
.
process_id
.
name
or
"压铆"
in
self
.
process_id
.
name
or
"折弯"
in
self
.
process_id
.
name
if
not
self
.
routing_line_id
and
not
judge
:
# 无工艺明细直接返回
return
1
if
"切割"
in
self
.
process_id
.
name
:
multiple
=
self
.
task_id
.
spare_parts_qty
/
self
.
task_id
.
plan_qty
elif
"压铆"
in
self
.
process_id
.
name
:
multiple
=
self
.
task_id
.
press_riveting_qty
/
self
.
task_id
.
plan_qty
elif
"折弯"
in
self
.
process_id
.
name
:
multiple
=
self
.
task_id
.
bending_qty
/
self
.
task_id
.
plan_qty
else
:
multiple
=
self
.
routing_line_id
.
multiple
if
len
(
previous
)
>
1
:
# 取到最小数对应的前道工单
rel_previous
=
self
.
_multi_previous_get_min_finished
(
previous
)
rel_previous_judge
=
"切割"
in
rel_previous
.
process_id
.
name
or
"压铆"
in
rel_previous
.
process_id
.
name
\
or
"折弯"
in
rel_previous
.
process_id
.
name
if
not
rel_previous
.
routing_line_id
.
multiple
and
not
rel_previous_judge
:
# 无倍数直接返回
return
1
if
"切割"
in
rel_previous
.
process_id
.
name
:
rel_previous_multiple
=
rel_previous
.
task_id
.
spare_parts_qty
/
rel_previous
.
task_id
.
plan_qty
elif
"压铆"
in
rel_previous
.
process_id
.
name
:
rel_previous_multiple
=
rel_previous
.
task_id
.
press_riveting_qty
/
rel_previous
.
task_id
.
plan_qty
elif
"折弯"
in
rel_previous
.
process_id
.
name
:
rel_previous_multiple
=
rel_previous
.
task_id
.
bending_qty
/
rel_previous
.
task_id
.
plan_qty
else
:
rel_previous_multiple
=
rel_previous
.
routing_line_id
.
multiple
return
multiple
/
rel_previous_multiple
if
not
previous
.
routing_line_id
.
multiple
and
not
judge
:
# 无倍数直接返回
return
1
elif
not
previous
and
judge
:
return
1
if
"切割"
in
previous
.
process_id
.
name
:
previous_multiple
=
previous
.
task_id
.
spare_parts_qty
/
self
.
task_id
.
plan_qty
elif
"压铆"
in
previous
.
process_id
.
name
:
previous_multiple
=
previous
.
task_id
.
press_riveting_qty
/
self
.
task_id
.
plan_qty
elif
"折弯"
in
previous
.
process_id
.
name
:
previous_multiple
=
previous
.
task_id
.
bending_qty
/
self
.
task_id
.
plan_qty
else
:
previous_multiple
=
previous
.
routing_line_id
.
multiple
return
multiple
/
previous_multiple
jzjx_project/models/work_log.py
View file @
c71f3106
...
@@ -60,7 +60,7 @@ class RokeWorkLog(models.Model):
...
@@ -60,7 +60,7 @@ class RokeWorkLog(models.Model):
return
res
return
res
try
:
try
:
work_order
.
app_confirm
(
work_order
.
app_confirm
(
finish_qty
=
sum
(
res
.
part_ids
.
mapped
(
"amount"
))
/
(
task
.
spare_parts_qty
if
task
.
spare_parts_qty
!=
0
else
1
)
,
finish_qty
=
sum
(
res
.
part_ids
.
mapped
(
"amount"
)),
employee_id
=
self
.
env
.
user
.
employee_id
.
id
,
employee_id
=
self
.
env
.
user
.
employee_id
.
id
,
unqualified_qty
=
0
,
unqualified_qty
=
0
,
work_hours
=
round
(
res
.
timeTaken
/
3600
,
2
),
work_hours
=
round
(
res
.
timeTaken
/
3600
,
2
),
...
...
jzjx_project/views/inherit_roke_production_task.xml
View file @
c71f3106
...
@@ -13,7 +13,11 @@
...
@@ -13,7 +13,11 @@
</xpath>
</xpath>
<xpath
expr=
"//field[@name='pass_rate']"
position=
"after"
>
<xpath
expr=
"//field[@name='pass_rate']"
position=
"after"
>
<field
name=
"UploadMsg"
readonly=
"1"
/>
<field
name=
"UploadMsg"
readonly=
"1"
/>
</xpath>
<xpath
expr=
"//field[@name='type']"
position=
"after"
>
<field
name=
"spare_parts_qty"
/>
<field
name=
"spare_parts_qty"
/>
<field
name=
"press_riveting_qty"
/>
<field
name=
"bending_qty"
/>
</xpath>
</xpath>
<xpath
expr=
"//header"
position=
"inside"
>
<xpath
expr=
"//header"
position=
"inside"
>
<button
name=
"upload_task"
type=
"object"
string=
"上传任务"
class=
"btn btn-primary"
<button
name=
"upload_task"
type=
"object"
string=
"上传任务"
class=
"btn btn-primary"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment