Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
ypt_mgw_local
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
苏星豪
ypt_mgw_local
Commits
627e9f0f
提交
627e9f0f
authored
11月 22, 2022
作者:
蒋代伟
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
金彩山垛标绑定
上级
9188cee7
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
142 行增加
和
7 行删除
+142
-7
views.py
inventory/views.py
+142
-7
没有找到文件。
inventory/views.py
浏览文件 @
627e9f0f
...
@@ -2374,13 +2374,7 @@ def fg_update(request,is_app=False):
...
@@ -2374,13 +2374,7 @@ def fg_update(request,is_app=False):
if
vch_id
==
1
and
'stack_binding'
in
r
:
if
vch_id
==
1
and
'stack_binding'
in
r
:
st
=
r
[
'stack_binding'
]
st
=
r
[
'stack_binding'
]
if
len
(
st
)
>
0
:
if
len
(
st
)
>
0
:
stack_binding
=
jcs_virtual_stack_binding
(
batch
,
r
[
'stack_binding'
])
stack_binding
=
jcs_virtual_stack_binding
(
batch
,
r
[
'stack_binding'
],
cmp_id
)
stacks
=
stack_binding
[
'stacks'
]
if
stacks
and
vch_id
==
1
:
aSql
=
stack_binding
[
'insert_sql'
]
if
aSql
:
sSql
=
"insert into codes(label_code,tb,product_id,stack_id) values "
+
","
.
join
(
aSql
)
+
" on CONFLICT(label_code) do update set stack_id = EXCLUDED.stack_id"
cur
.
execute
(
sSql
)
#2022-05-10 保存原始标签号码
#2022-05-10 保存原始标签号码
...
@@ -13901,3 +13895,144 @@ def jcs_virtual_stack_binding(batch,stack_binding):
...
@@ -13901,3 +13895,144 @@ def jcs_virtual_stack_binding(batch,stack_binding):
# "from inventory_stkdetails where batch_id=" + str(batch.id) + " and stack_id>0 " + \
# "from inventory_stkdetails where batch_id=" + str(batch.id) + " and stack_id>0 " + \
# "on CONFLICT(stack_id,label_pk_id) do nothing"
# "on CONFLICT(stack_id,label_pk_id) do nothing"
return
data
return
data
def
jcs_virtual_stack_binding
(
batch
,
stack_binding
,
company_id
):
data
=
{
'e'
:
''
}
# 2022-07-20 数据写入日志
cs
=
Company
.
objects
.
filter
(
id
=
int
(
company_id
))
c
=
cs
[
0
]
cur
=
connection
.
cursor
()
cur
.
execute
(
"create temp table temps("
+
\
"id serial,"
+
\
"label_code character varying(32) ,"
+
\
"tb character varying(20),"
+
\
"product_id integer,"
+
\
"stack_id integer,"
+
\
"wrapper_id integer,"
+
\
"code character varying(32),"
+
\
"label_id bigint,"
+
\
"label_pk_id bigint,"
+
\
"label_pkg smallint,"
+
\
"err character varying(100),"
+
\
"label_code0 character varying(32),"
+
\
"from_agent_id integer)"
)
insert_sql
=
[]
codes
=
[]
for
i
in
stack_binding
:
is_physical
=
True
code
=
i
[
'stack'
]
if
code
[:
4
]
==
'xndb'
:
is_physical
=
False
stks
=
Stack
.
objects
.
filter
(
code
=
code
)
if
stks
:
stack
=
stks
[
0
]
else
:
stack
=
Stack
(
company_id
=
batch
.
company_id
,
code
=
code
)
stack
.
product_id
=
batch
.
product_id
stack
.
store_id
=
batch
.
store_fr_id
stack
.
is_physical
=
is_physical
if
'location'
in
i
:
stack
.
location
=
i
[
'location'
]
if
'qty_lmt'
in
i
:
stack
.
qty_lmt
=
i
[
'qty_lmt'
]
if
'is_fixed'
in
i
:
stack
.
is_fixed
=
i
[
'is_fixed'
]
stack
.
qty_lmt
=
0
stack
.
save
()
if
batch
.
product_id
:
product_id
=
str
(
batch
.
product_id
)
else
:
product_id
=
'null'
for
l
in
i
[
'codes'
]:
insert_sql
.
append
(
"('"
+
l
+
"','"
+
l
[:
4
]
+
"',"
+
product_id
+
","
+
str
(
stack
.
id
)
+
")"
)
codes
.
append
(
l
)
# s = "INSERT INTO inventory_stackdetails(company_id,product_id,label_pk_id,label_id,label_pkg,label_code,tm,stack_id) " + \
# "select company_id,product_id,label_pk_id,label_id,label_pkg,label_code,now(),stack_id " + \
# "from inventory_stkdetails where batch_id=" + str(batch.id) + " and stack_id>0 " + \
# "on CONFLICT(stack_id,label_pk_id) do nothing"
sSql
=
"insert into temps(label_code,tb,product_id,stack_id) "
\
"values "
+
","
.
join
(
insert_sql
)
cur
.
execute
(
sSql
)
stacks
=
[]
stack_binding
=
''
# 2022-05-10 保存原始标签号码
cur
.
execute
(
"update temps set label_code0=label_code"
)
s
=
"update temps o set code=coalesce"
+
\
"((select code0 from label.lbl_replace_details where code=o.label_code order by batch_id desc limit 1),o.label_code)"
cur
.
execute
(
s
)
# 2020-07-27 处理跨段动态绑定
s
=
"update temps set tb=b.tbname from "
+
\
"(SELECT tb,label_code from temps) a "
+
\
"left outer join "
+
\
"(SELECT segment, tbname FROM label.lbl_tbcross) b "
+
\
"on a.tb=b.segment "
+
\
"where temps.label_code=a.label_code and b.tbname is not null"
cur
.
execute
(
s
)
# 2022-05-09 有些AB样标使用了跨段表里的号段
s
=
"select "
+
\
"(select code_a FROM label.lbl_abcode where code_b=label_code or code_a=label_code),"
+
\
"tb='t'||left((select code_a FROM label.lbl_abcode where code_b=label_code or code_a=label_code),4) "
+
\
"from temps "
+
\
"where (select id from label.lbl_abcode where code_a=label_code or code_b=label_code limit 1)>0"
cur
.
execute
(
s
)
r
=
cur
.
fetchone
()
s
=
"update temps set code="
+
\
"(select code_a FROM label.lbl_abcode where code_b=label_code or code_a=label_code),"
+
\
"tb='t'||left((select code_a FROM label.lbl_abcode where code_b=label_code or code_a=label_code),4) "
+
\
"where (select id from label.lbl_abcode where code_a=label_code or code_b=label_code limit 1)>0"
cur
.
execute
(
s
)
cur
.
execute
(
"update temps set tb='t'||left(code,4) where length(tb)=4"
)
cur
.
execute
(
"select tb from temps group by tb"
)
rs
=
cur
.
fetchall
()
for
r
in
rs
:
# cur.execute("select to_regclass('label." + r[0] + "')")
cur
.
execute
(
"select count(*) from information_schema.tables where table_schema='label' "
+
\
"and table_type='BASE TABLE' and table_name='"
+
r
[
0
]
+
"'"
)
r0
=
cur
.
fetchone
()
if
r0
[
0
]:
s
=
"update temps set "
+
\
"label_id=b.id,"
+
\
"label_pkg=b.package_id,"
+
\
"label_pk_id=coalesce(b.parent_id,b.id) "
+
\
"from "
+
\
"(SELECT label_code,code from temps where tb='"
+
r
[
0
]
+
"') a "
+
\
"left outer join "
+
\
"(select id,code,parent_id,package_id,is_pk from label."
+
r
[
0
]
+
") b "
+
\
"on a.code=b.code "
+
\
"where tb='"
+
r
[
0
]
+
"' and temps.code=a.code"
cur
.
execute
(
s
)
# 没有标签id的,看是不是企业第三方标签
s
=
"update temps set "
+
\
"label_id=b.id,"
+
\
"label_pkg=b.package_id,"
+
\
"label_pk_id=coalesce(b.parent_id,b.id) "
+
\
"from "
+
\
"(SELECT label_code,code from codes where label_id is null) a "
+
\
"left outer join "
+
\
"(select id,code,parent_id,package_id,is_pk from label.thirdparty where cid="
+
str
(
c
.
ancestor_id
)
+
") b "
+
\
"on a.code=b.code "
+
\
"where temps.code=a.code and label_id is null"
cur
.
execute
(
s
)
s
=
"INSERT INTO inventory_stackdetails(company_id,product_id,label_pk_id,label_id,label_pkg,label_code,tm,stack_id) "
+
\
"select "
+
str
(
company_id
)
+
",product_id,label_pk_id,label_id,label_pkg,label_code,now(),stack_id "
+
\
"from temps where label_pk_id is not null and stack_id>0 "
+
\
"on CONFLICT(stack_id,label_pk_id) do nothing"
cur
.
execute
(
s
)
return
data
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论