Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
H
hh_ccs
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
贺阳
hh_ccs
Commits
ce40d788
提交
ce40d788
authored
2月 11, 2025
作者:
贺阳
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改的接口,返回条件后台再同步包裹状态
上级
a23e78ca
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
101 行增加
和
27 行删除
+101
-27
cc_last_mile_provider_views.xml
ccs_base/views/cc_last_mile_provider_views.xml
+3
-2
order_controller.py
ccs_connect_tiktok/controllers/order_controller.py
+7
-17
cc_bill_loading.py
ccs_connect_tiktok/models/cc_bill_loading.py
+4
-2
config.py
consumers/config.py
+2
-6
push_ship_package_state.py
consumers/push_ship_package_state.py
+67
-0
push_ship_package_state.conf
...mers/supervisord_conf/conf.d/push_ship_package_state.conf
+18
-0
没有找到文件。
ccs_base/views/cc_last_mile_provider_views.xml
浏览文件 @
ce40d788
...
...
@@ -9,8 +9,9 @@
<group>
<field
name=
"name"
/>
<!-- 快递名称 -->
<field
name=
"abbreviation"
/>
<!-- 简称 -->
<field
name=
"tape_color_value"
required=
"1"
/>
<!-- 胶带色值 -->
<field
name=
"matching_value"
placeholder=
"Multiple entries can be made, one matching value per line"
/>
<!-- 尾程服务商匹配值 -->
<field
name=
"tape_color_value"
widget=
"color"
required=
"1"
/>
<!-- 胶带色值 -->
<field
name=
"matching_value"
placeholder=
"Multiple entries can be made, one matching value per line"
/>
<!-- 尾程服务商匹配值 -->
</group>
<group>
<field
name=
"active"
/>
<!-- 有效☑️ -->
...
...
ccs_connect_tiktok/controllers/order_controller.py
浏览文件 @
ce40d788
...
...
@@ -177,8 +177,9 @@ class OrderController(http.Controller):
for
package
in
package_obj
:
ship_packages
+=
[{
'id'
:
ship_package
,
'tally_time'
:
tally_time
}
for
ship_package
in
package
.
ship_package_ids
if
package
.
tally_state
==
'unprocessed_goods'
]
# 小包
'tally_time'
:
tally_time
}
for
ship_package
in
package
.
ship_package_ids
if
package
.
tally_state
==
'unprocessed_goods'
]
# 小包
package_obj
.
update_big_package_info
(
action_type
=
action_type
,
tally_state
=
package_item
.
get
(
'tally_state'
),
tally_user_id
=
package_item
.
get
(
...
...
@@ -268,21 +269,10 @@ class OrderController(http.Controller):
ship_package_ids
=
tuple
(
ship_package_dict
[
'id'
]
.
id
for
ship_package_dict
in
ship_packages
if
ship_package_dict
[
'id'
])
ship_package_objs
=
request
.
env
[
'cc.ship.package'
]
.
sudo
()
.
search
(
[(
'id'
,
'in'
,
ship_package_ids
)])
bl_obj
.
package_callback_func
(
ship_package_objs
)
# asyncio.create_task(bl_obj.package_callback_func(ship_package_objs)) # 异步执行 报错 没有什么loop
# threading.Thread(target=bl_obj.package_callback_func, args=(ship_package_objs,)).start()#方法里报错
# # 定义一个函数来在新线程中执行异步任务
# def run_async_task():
# loop = asyncio.new_event_loop() # 创建新的事件循环
# asyncio.set_event_loop(loop) # 设置事件循环
# loop.run_until_complete(bl_obj.package_callback_func(ship_package_objs)) # 运行异步函数
# loop.close() # 关闭事件循环
#
# # 创建并启动新线程
# threading.Thread(target=run_async_task).start()
# bl_obj.with_delay(description=bl_obj.bl_no).package_callback_func(ship_package_objs) # 不执行了
redis_conn
=
request
.
env
[
'common.common'
]
.
sudo
()
.
get_redis
()
if
redis_conn
and
redis_conn
!=
'no'
:
redis_conn
.
lpush
(
'push_ship_package_state'
,
json
.
dumps
(
{
'bl_id'
:
bl_obj
.
id
,
'ship_package_ids'
:
ship_package_ids
}))
res
[
'state'
]
=
200
else
:
res
[
'message'
]
=
bill_noexist_msg_dic
[
pda_lang
]
# 提单不存在
...
...
ccs_connect_tiktok/models/cc_bill_loading.py
浏览文件 @
ce40d788
...
...
@@ -186,6 +186,7 @@ class CcShipPackage(models.Model):
return
push_data
def
callback_track
(
self
,
is_push
=
True
):
logging
.
info
(
'开始推送'
)
if
not
self
.
is_sync
and
self
.
state
and
self
.
state
.
tk_code
:
data
=
self
.
get_callback_track_data
()
if
is_push
:
...
...
@@ -262,13 +263,14 @@ class CcBl(models.Model):
is_ok
=
True
for
item
in
self
:
ship_packages
=
self
.
env
[
'cc.ship.package'
]
.
search
([(
'bl_id'
,
'='
,
item
.
id
),
(
'is_sync'
,
'='
,
False
)])
is_ok
=
item
.
package_callback_func
(
ship_packages
)
is_ok
=
item
.
package_callback_func
(
ship_packages
.
ids
)
return
is_ok
def
package_callback_func
(
self
,
ship_packages
):
def
package_callback_func
(
self
,
ship_package
_id
s
):
"""
同步小包状态
"""
ship_packages
=
self
.
env
[
'cc.ship.package'
]
.
search
([(
'id'
,
'in'
,
ship_package_ids
),
(
'is_sync'
,
'='
,
False
)])
is_ok
=
True
tt_api_obj
=
self
.
env
[
"ao.tt.api"
]
.
sudo
()
...
...
consumers/config.py
浏览文件 @
ce40d788
...
...
@@ -2,16 +2,14 @@
# 本地
db_ip
=
"127.0.0.1"
db_port
=
"8
888
"
db_name
=
"hh
_
ccs_test"
db_port
=
"8
069
"
db_name
=
"hhccs_test"
db_user
=
"admin"
db_password
=
"admin"
redis_options
=
dict
(
host
=
'127.0.0.1'
,
port
=
6379
,
# password='topodoo1314',
decode_responses
=
True
,
db
=
0
)
...
...
@@ -44,5 +42,3 @@ redis_options = dict(
# decode_responses=True,
# db=3
# )
consumers/push_ship_package_state.py
0 → 100644
浏览文件 @
ce40d788
# coding=utf-8
import
json
import
logging
import
odoorpc
import
redis
import
requests
import
time
from
requests.adapters
import
HTTPAdapter
import
config
# 本地
# 默认字符gbk
logging
.
basicConfig
(
filename
=
'./push_ship_package_state.log'
,
level
=
logging
.
INFO
)
# 环境?
# 设置文件字符为utf-8
# logging.basicConfig(handlers=[logging.FileHandler('logs/push_ship_package_state.log', 'a', 'utf-8')],
# format='%(asctime)s %(levelname)s %(message)s', level=logging.INFO)
class
Order_dispose
(
object
):
def
__init__
(
self
):
# rpc连接
self
.
odoo_db
=
odoorpc
.
ODOO
(
config
.
db_ip
,
port
=
config
.
db_port
)
self
.
odoo_db
.
login
(
config
.
db_name
,
config
.
db_user
,
config
.
db_password
)
def
order_data
(
self
,
record_ids
):
res_data
=
[]
try
:
result
=
json
.
loads
(
record_ids
)
ship_package_ids
=
result
[
'ship_package_ids'
]
# 小包
bl_id
=
result
[
'bl_id'
]
logging
.
info
(
'push_ship_package_state kw:
%
s'
,
result
)
bl_obj
=
self
.
odoo_db
.
env
[
'cc.bl'
]
.
browse
(
bl_id
)
# 提单
is_ok
=
bl_obj
.
package_callback_func
(
ship_package_ids
)
# 调用同步包裹状态
# 失败的重复推送
for
i
in
range
(
3
):
if
not
is_ok
:
is_ok
=
bl_obj
.
package_callback_func
(
ship_package_ids
)
logging
.
info
(
'push_ship_package_state 重试推送:
%
d次'
%
(
i
+
1
))
else
:
break
except
Exception
as
ex
:
logging
.
error
(
'push_ship_package_state error:
%
s'
%
str
(
ex
))
return
res_data
try
:
pool
=
redis
.
ConnectionPool
(
**
config
.
redis_options
)
r
=
redis
.
Redis
(
connection_pool
=
pool
)
logging
.
info
(
u'redis连接成功'
)
Order_dispose
=
Order_dispose
()
while
1
:
try
:
result
=
r
.
brpop
(
'push_ship_package_state'
,
0
)
data1
=
result
[
1
]
response_data
=
Order_dispose
.
order_data
(
data1
)
except
Exception
as
e
:
logging
.
error
(
e
)
continue
except
Exception
as
e
:
logging
.
error
(
"登录失败"
)
logging
.
error
(
e
)
consumers/supervisord_conf/conf.d/push_ship_package_state.conf
0 → 100644
浏览文件 @
ce40d788
[
program
:
push_big_consumer_1
]
process_name
=%(
program_name
)
s_
%(
process_num
)
02
d
; 进程名称
directory
=
D
:/
hh_ccs
; 程序的启动目录
command
= /
usr
/
bin
/
python3
D
:/
hh_ccs
/
push_ship_package_state
.
py
; 启动命令
;
directory
= /
mnt
/
extra
-
addons
; 程序的启动目录
;
command
= /
usr
/
bin
/
python3
/
mnt
/
extra
-
addons
/
push_ship_package_state
.
py
; 启动命令
autostart
=
true
; 在
supervisord
启动的时候也自动启动
startsecs
=
5
; 启动
5
秒后没有异常退出,就当作已经正常启动了
autorestart
=
true
; 程序异常退出后自动重启
startretries
=
3
; 启动失败自动重试次数,默认是
3
user
=
root
; 用哪个用户启动
numprocs
=
1
; 进程数
redirect_stderr
=
true
; 把
stderr
重定向到
stdout
,默认
false
stdout_logfile_maxbytes
=
20
MB
;
stdout
日志文件大小,默认
50
MB
stdout_logfile_backups
=
20
;
stdout
日志文件备份数
;
stdout
日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(
supervisord
会自动创建日志文件)
stdout_logfile
= /
var
/
log
/
supervisor
/
push_ship_package_state
.
log
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论