Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
H
hh_ccs
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
贺阳
hh_ccs
Commits
48082121
提交
48082121
authored
9月 27, 2024
作者:
郑笛
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
队列
上级
50fbbe32
显示空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
222 行增加
和
30 行删除
+222
-30
__init__.py
ccs_base/models/__init__.py
+1
-0
common_common.py
ccs_base/models/common_common.py
+10
-0
redis_connection.py
ccs_base/models/redis_connection.py
+30
-0
zh_CN.po
ccs_connect_tiktok/i18n/zh_CN.po
+23
-0
cc_bill_loading.py
ccs_connect_tiktok/models/cc_bill_loading.py
+78
-29
cc_bl_view.xml
ccs_connect_tiktok/views/cc_bl_view.xml
+12
-1
config.py
consumers/config.py
+68
-0
没有可用的文件名
+0
-0
没有找到文件。
ccs_base/models/__init__.py
浏览文件 @
48082121
...
...
@@ -5,4 +5,5 @@ from . import cc_customs_declaration_order
from
.
import
cc_node_exception_reason
from
.
import
mail_thread
from
.
import
common_common
from
.
import
redis_connection
ccs_base/models/common_common.py
浏览文件 @
48082121
# -*- coding: utf-8 -*-
import
datetime
import
re
from
.redis_connection
import
redis_connection
from
odoo
import
fields
,
models
,
exceptions
,
api
,
tools
import
logging
__author__
=
'zd'
_logger
=
logging
.
getLogger
(
__name__
)
r
=
redis_connection
()
class
CommonCommon
(
models
.
Model
):
...
...
@@ -22,3 +25,10 @@ class CommonCommon(models.Model):
d
=
dt
+
datetime
.
timedelta
(
hours
=
8
)
nTime
=
d
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
return
nTime
def
get_redis
(
self
):
"""
连接redis
:return:
"""
return
r
ccs_base/models/redis_connection.py
0 → 100644
浏览文件 @
48082121
# -*- coding: utf-8 -*-
from
odoo.tools
import
config
import
redis
import
logging
_logger
=
logging
.
getLogger
(
__name__
)
def
redis_connection
():
# 连接redis
redis_config
=
config
.
misc
.
get
(
"redis"
,
{})
if
redis_config
:
try
:
redis_options
=
dict
(
host
=
redis_config
.
get
(
'redis_host'
),
port
=
redis_config
.
get
(
'redis_port'
),
password
=
redis_config
.
get
(
'password'
),
decode_responses
=
True
,
db
=
redis_config
.
get
(
'db'
),
)
pool
=
redis
.
ConnectionPool
(
**
redis_options
)
r
=
redis
.
Redis
(
connection_pool
=
pool
)
return
r
except
Exception
as
e
:
_logger
.
error
(
u'连接redis失败,原因:
%
s'
%
str
(
e
))
return
'no'
else
:
_logger
.
error
(
u'conf文件中未配置redis连接信息'
)
return
'no'
ccs_connect_tiktok/i18n/zh_CN.po
浏览文件 @
48082121
...
...
@@ -22,6 +22,11 @@ msgstr ""
msgid "<span class=\"o_stat_text\">Not Sync Ship Packages</span>"
msgstr "<span class=\"o_stat_text\">待同步小包</span>"
#. module: ccs_connect_tiktok
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.form_cc_bl_view_inherit
msgid "<span class=\"o_stat_text\">Wait Sync Ship Packages</span>"
msgstr "<span class=\"o_stat_text\">等待同步小包</span>"
#. module: ccs_connect_tiktok
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.form_cc_bl_view_inherit
msgid "<span class=\"o_stat_text\">Ship Packages</span>"
...
...
@@ -174,6 +179,13 @@ msgstr "未同步"
msgid "Not Sync Ship Packages"
msgstr "待同步小包"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/cc_bill_loading.py:0
#, python-format
msgid "Wait Sync Ship Packages"
msgstr "等待同步小包"
#. module: ccs_connect_tiktok
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_ship_package_sync_log__operate_remark
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.form_cc_ship_package_sync_log_view
...
...
@@ -388,3 +400,14 @@ msgstr ""
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_ao_tt_api_log__request_id
msgid "请求id"
msgstr ""
#. module: ccs_connect_tiktok
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_ship_package__wait_sync
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.search_cc_ship_package_view_inherit
msgid "Wait Sync"
msgstr "等待同步"
#. module: ccs_connect_tiktok
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_bl__waitsync_package_count
msgid "Waitsync Package Count"
msgstr "等待同步小包数"
ccs_connect_tiktok/models/cc_bill_loading.py
浏览文件 @
48082121
import
base64
import
json
import
logging
import
time
import
pytz
from
datetime
import
datetime
from
lxml
import
etree
...
...
@@ -124,6 +126,7 @@ class CcShipPackage(models.Model):
_inherit
=
"cc.ship.package"
is_sync
=
fields
.
Boolean
(
'Is Sync'
,
default
=
False
)
wait_sync
=
fields
.
Boolean
(
'Wait Sync'
,
default
=
False
)
# 等待同步
tk_code
=
fields
.
Char
(
related
=
'state.tk_code'
,
store
=
True
,
string
=
'TK Code'
,
help
=
'TK Code'
)
# 增加同步日志纪录字段
...
...
@@ -181,35 +184,65 @@ class CcShipPackage(models.Model):
if
not
self
.
is_sync
and
self
.
state
and
self
.
state
.
tk_code
:
data
=
self
.
get_callback_track_data
()
if
is_push
:
# 连接redis
redis_conn
=
self
.
env
[
'common.common'
]
.
sudo
()
.
get_redis
()
if
redis_conn
==
'no'
:
raise
ValidationError
(
'请先配置redis'
)
tt_api_obj
=
self
.
env
[
"ao.tt.api"
]
.
sudo
()
response
=
tt_api_obj
.
callback_track
(
data
)
response_data
=
response
.
json
()
if
response_data
[
'code'
]
!=
0
:
self
.
is_sync
=
False
self
.
_cr
.
commit
()
error_msg
=
response_data
[
'msg'
]
request_id
=
response_data
[
'requestID'
]
code
=
response_data
[
'code'
]
self
.
env
[
'ao.tt.api.log'
]
.
sudo
()
.
create_api_log
(
self
.
tracking_no
or
''
,
'小包状态轨迹回传:'
+
error_msg
,
data
,
code
,
request_id
,
source
=
'推出'
)
return
error_msg
else
:
# 回传成功
self
.
is_sync
=
True
self
.
env
[
'cc.ship.package.sync.log'
]
.
sudo
()
.
create_sync_log
(
self
.
id
,
'Tiktok'
,
self
.
state
.
tk_code
,
self
.
state_explain
,
self
.
process_time
.
strftime
(
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
))
timestamp
=
int
(
time
.
time
())
sign
=
tt_api_obj
.
generate_sign
(
timestamp
,
data
)
app_key
=
self
.
env
[
"ir.config_parameter"
]
.
sudo
()
.
get_param
(
'tt_app_key'
)
or
''
version
=
self
.
env
[
"ir.config_parameter"
]
.
sudo
()
.
get_param
(
'tt_version'
)
or
'3.0'
tt_url
=
self
.
env
[
"ir.config_parameter"
]
.
sudo
()
.
get_param
(
'tt_url'
)
or
''
vals
=
{
'action'
:
'post'
,
'url'
:
tt_url
+
'/logistics/provider/cross_border/callback_track?country=GB'
,
'data'
:
data
,
'sign'
:
sign
,
'timestamp'
:
timestamp
,
'version'
:
version
,
'app_key'
:
app_key
,
'ship_package_info'
:
{
'id'
:
self
.
id
,
'tracking_no'
:
self
.
tracking_no
or
''
,
'tk_code'
:
self
.
state
.
tk_code
,
'state_explain'
:
self
.
state_explain
or
''
,
'process_time'
:
self
.
process_time
.
strftime
(
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
),
'create_user_id'
:
self
.
env
.
user
.
id
,
},
}
self
.
wait_sync
=
True
self
.
_cr
.
commit
()
request_id
=
response_data
[
'requestID'
]
self
.
env
[
'ao.tt.api.log'
]
.
sudo
()
.
create_api_log
(
self
.
tracking_no
or
''
,
''
,
data
,
0
,
request_id
,
source
=
'推出'
)
return
''
redis_conn
.
lpush
(
'package_track_list'
,
json
.
dumps
(
vals
))
# tt_api_obj = self.env["ao.tt.api"].sudo()
# response = tt_api_obj.callback_track(data)
# response_data = response.json()
# if response_data['code'] != 0:
# self.is_sync = False
# self._cr.commit()
# error_msg = response_data['msg']
# request_id = response_data['requestID']
# code = response_data['code']
# self.env['ao.tt.api.log'].sudo().create_api_log(self.tracking_no or '',
# '小包状态轨迹回传:' + error_msg,
# data,
# code,
# request_id, source='推出')
#
# return error_msg
# else:
# # 回传成功
# self.is_sync = True
# self.env['cc.ship.package.sync.log'].sudo().create_sync_log(self.id, 'Tiktok', self.state.tk_code,
# self.state_explain,
# self.process_time.strftime(
# '%Y-%m-%d %H:%M:%S'))
# self._cr.commit()
# request_id = response_data['requestID']
# self.env['ao.tt.api.log'].sudo().create_api_log(self.tracking_no or '', '', data, 0, request_id,
# source='推出')
#
# return ''
else
:
self
.
is_sync
=
True
self
.
env
[
'cc.ship.package.sync.log'
]
.
sudo
()
.
create_sync_log
(
self
.
id
,
'Tiktok'
,
self
.
state
.
tk_code
,
...
...
@@ -229,8 +262,10 @@ class CcBl(models.Model):
# 增加未同步小包数量字段
unsync_package_count
=
fields
.
Integer
(
'Unsync Package Count'
,
compute
=
'_compute_unsync_package_count'
)
# 增加等待同步小包数量字段
waitsync_package_count
=
fields
.
Integer
(
'Waitsync Package Count'
,
compute
=
'_compute_unsync_package_count'
)
# 计算未同步小包数量
# 计算未同步小包数量
,等待同步小包数量
@api.depends
(
'ship_package_ids'
)
def
_compute_unsync_package_count
(
self
):
for
record
in
self
:
...
...
@@ -239,11 +274,14 @@ class CcBl(models.Model):
record
.
unsync_package_count
=
len
(
record_counts
)
else
:
record
.
unsync_package_count
=
0
wait_sync_counts
=
record
.
ship_package_ids
.
filtered
(
lambda
r
:
r
.
wait_sync
)
record
.
waitsync_package_count
=
len
(
wait_sync_counts
)
# 定义一个方法, 获取提单下的所有未同步的小包,并回传小包状态
def
callback_track
(
self
):
for
item
in
self
:
ship_packages
=
self
.
env
[
'cc.ship.package'
]
.
search
([(
'bl_id'
,
'='
,
item
.
id
),
(
'is_sync'
,
'='
,
False
)])
ship_packages
=
self
.
env
[
'cc.ship.package'
]
.
search
([
(
'bl_id'
,
'='
,
item
.
id
),
(
'is_sync'
,
'='
,
False
),
(
'wait_sync'
,
'='
,
False
)])
for
package
in
ship_packages
:
package
.
callback_track
()
return
True
...
...
@@ -274,6 +312,17 @@ class CcBl(models.Model):
'domain'
:
[(
'bl_id'
,
'='
,
self
.
id
),
(
'is_sync'
,
'='
,
False
)],
}
# 创建显示包裹的action
def
action_show_wait_sync_ship_package
(
self
):
# 返回一个action,显示包裹
return
{
'name'
:
_
(
'Wait Sync Ship Packages'
),
'type'
:
'ir.actions.act_window'
,
'res_model'
:
'cc.ship.package'
,
'view_mode'
:
'tree,form'
,
'domain'
:
[(
'bl_id'
,
'='
,
self
.
id
),
(
'wait_sync'
,
'='
,
True
)],
}
def
search_bl_info
(
self
,
pda_lang
=
False
):
"""
查询提单信息
...
...
ccs_connect_tiktok/views/cc_bl_view.xml
浏览文件 @
48082121
...
...
@@ -21,6 +21,9 @@
<field
name=
"inherit_id"
ref=
"ccs_base.form_cc_bl_view"
/>
<field
name=
"arch"
type=
"xml"
>
<!-- # header之间增加一个按钮,调用自定义的方法-->
<xpath
expr=
"//button[@name='%(ccs_base.action_batch_input_ship_package_wizard)d']"
position=
"attributes"
>
<attribute
name=
"attrs"
>
{'invisible': [('waitsync_package_count', '>', 0)]}
</attribute>
</xpath>
<header
position=
"inside"
>
<button
name=
"callback_track"
string=
"Sync Package Status"
type=
"object"
/>
<button
name=
"batch_action_sync"
string=
"Sync CC Attachment"
type=
"object"
/>
...
...
@@ -44,6 +47,13 @@
<span
class=
"o_stat_text"
>
Not Sync Ship Packages
</span>
</div>
</button>
<button
name=
"action_show_wait_sync_ship_package"
type=
"object"
class=
"oe_stat_button"
icon=
"fa-circle-o-notch"
>
<div
class=
"o_stat_info"
>
<field
name=
"waitsync_package_count"
widget=
"badge"
decoration-danger=
"1 == 1"
/>
<span
class=
"o_stat_text"
>
Wait Sync Ship Packages
</span>
</div>
</button>
</button>
</field>
</record>
...
...
@@ -57,7 +67,7 @@
<field
name=
"arch"
type=
"xml"
>
<field
name=
"state"
position=
"after"
>
<field
name=
"is_sync"
/>
<field
name=
"wait_sync"
/>
</field>
<tree
position=
"attributes"
>
...
...
@@ -74,6 +84,7 @@
<field
name=
"arch"
type=
"xml"
>
<search
position=
"inside"
>
<filter
string=
"Not Sync"
name=
"filter_is_sync"
domain=
"[('is_sync','=',False)]"
/>
<filter
string=
"Wait Sync"
name=
"filter_wait_sync"
domain=
"[('wait_sync','=',True)]"
/>
</search>
</field>
</record>
...
...
consumers/config.py
0 → 100644
浏览文件 @
48082121
# coding=utf-8
# 本地
# db_ip = "127.0.0.1"
# db_port = "8066"
# db_name = "ao"
# db_user = "admin"
# db_password = "123"
#
redis_options
=
dict
(
host
=
'127.0.0.1'
,
port
=
6379
,
# password='topodoo1314',
decode_responses
=
True
,
db
=
0
)
postgresql_options
=
dict
(
host
=
"127.0.0.1"
,
port
=
5432
,
database
=
"hh_ccs"
,
user
=
"odoo"
,
password
=
"odoo"
,
)
# 测试
# db_ip = "121.199.167.133"
# db_port = "8369"
# db_name = "airorder0309"
# db_user = "admin"
# db_password = "123123"
#
# redis_options = dict(
# host='172.18.0.6',
# port=6379,
# # password='top123',
# decode_responses=True,
# db=3
# )
# postgresql_options = dict(
# host="172.18.0.2",
# port=5432,
# database="airorder0309",
# user="ao",
# password="ao",
# )
# product
# db_ip = "172.18.183.214"
# db_port = "9169"
# db_name = "air_order"
# db_user = "admin"
# db_password = "YHB1408ups"
#
# redis_options = dict(
# host='172.18.183.214',
# port=32768,
# password='top123',
# decode_responses=True,
# db=3
# )
# postgresql_options = dict(
# host="pgm-wz94v126235u6syw.pg.rds.aliyuncs.com",
# port="3433",
# database="air_order",
# user="ao",
# password="ao888123../",
# )
浏览文件 @
48082121
No preview for this file type
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论