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
69668d79
Commit
69668d79
authored
Mar 14, 2025
by
夏超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[fix] 东联同步功能优化
parent
9b18504f
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
72 additions
and
0 deletions
+72
-0
sdddl_project/models/inherit_roke_pub_interate_model.py
+72
-0
No files found.
sdddl_project/models/inherit_roke_pub_interate_model.py
View file @
69668d79
...
...
@@ -78,3 +78,75 @@ class RokePubIntegrateModel(models.Model):
"response_result"
:
str
(
data_dicts
),
"integrate_model_id"
:
self
.
id
,
})
def
sync_analysis_database
(
self
,
rel_data
):
print
(
"------------------------****数据库直连方式解析数据
%
s****------------------------"
%
rel_data
)
parent_model_
=
self
.
env
[
self
.
parent_model_name
]
parent_model_fields
=
[]
# 主表字段对象
for
integrate_field
in
self
.
integrate_field_ids
:
if
integrate_field
.
grade_sign
==
"主表"
:
parent_model_fields
.
append
(
integrate_field
)
# 按检索字段查询数据是否存在
parent_retrieval_field_obj
=
[
parent_model_field
for
parent_model_field
in
parent_model_fields
if
parent_model_field
.
retrieval_field_name
==
True
]
# parent_retrieval_field_obj = parent_retrieval_field_obj[0] if parent_retrieval_field_obj else None
for
data
in
rel_data
:
model_obj
=
None
if
parent_retrieval_field_obj
:
domain
=
[]
for
parent_retrieval_field
in
parent_retrieval_field_obj
:
if
parent_retrieval_field
.
fixed
:
# 判断是否固定值
field_value
=
parent_retrieval_field
.
fixed_value
# 判断字段类型
FieldsObj
=
self
.
env
[
"ir.model.fields"
]
.
search
([
(
"model_id.model"
,
"="
,
self
.
parent_model_name
),
(
"name"
,
"="
,
parent_retrieval_field
.
field_name
)
])
if
FieldsObj
.
ttype
==
"many2one"
:
# field_value = int(field_value)
try_convert_to_int
=
lambda
value
:
int
(
value
)
if
str
(
value
)
.
isdigit
()
else
None
field_value
=
try_convert_to_int
(
field_value
)
else
:
field_value
=
data
.
get
(
parent_retrieval_field
.
opposite_field_name
)
domain
.
append
(
(
parent_retrieval_field
.
field_name
,
'='
,
field_value
)
)
model_obj
=
parent_model_
.
search
(
domain
)
# if parent_retrieval_field_obj:
# model_obj = parent_model_.search([(parent_retrieval_field_obj.field_name, '=',
# data.get(parent_retrieval_field_obj.opposite_field_name))])
model_data
=
{}
for
integrate_field
in
self
.
integrate_field_ids
:
if
integrate_field
.
fixed
:
# 判断是否固定值
field_value
=
integrate_field
.
fixed_value
else
:
field_value
=
data
.
get
(
integrate_field
.
opposite_field_name
)
if
integrate_field
.
relation
:
# 判断是否是关联字段
field_value
=
self
.
env
[
integrate_field
.
relation_model_name
]
.
search
(
[(
integrate_field
.
relation_field_name
,
'='
,
field_value
)])
.
id
if
integrate_field
.
switch
:
# 判断是否需要取值转换
for
condition
in
integrate_field
.
condition_ids
:
# 通过配置的运算符进行运算 代替↑if代码
global_param
=
{
"field_value"
:
field_value
,
"check_value"
:
condition
.
check_value
}
formula_str
=
f
"""
global field_value, check_value
flag = True if field_value
%
s check_value else False
"""
%
(
condition
.
option
)
_logger
.
info
(
formula_str
)
param
=
{}
exec
(
formula_str
,
global_param
,
param
)
flag
=
param
[
"flag"
]
if
flag
:
field_value
=
condition
.
rel_value
field_value
=
self
.
data_convert
(
field_value
)
_logger
.
info
(
condition
.
rel_value
)
model_data
[
integrate_field
.
field_name
]
=
field_value
_logger
.
info
(
model_data
)
if
self
.
parent_model_name
!=
"roke.production.task"
and
model_obj
:
model_obj
.
write
(
model_data
)
else
:
parent_model_
.
create
(
model_data
)
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