Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
V
vue_django_test
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
周田
vue_django_test
Commits
de0d52c8
Commit
de0d52c8
authored
Sep 14, 2023
by
周田
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:增加协议版本和修改版本
parent
2d17d729
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
207 additions
and
16 deletions
+207
-16
urls.py
device_data_op/urls.py
+2
-1
views.py
device_data_op/views.py
+124
-2
CollapseTable.vue
frontend/src/components/protocol/CollapseTable.vue
+67
-2
KitCollapse.vue
frontend/src/components/protocol/KitCollapse.vue
+1
-1
services.py
protocol_version_manage/services.py
+13
-10
xdc.sqlite
xdc.sqlite
+0
-0
No files found.
device_data_op/urls.py
View file @
de0d52c8
...
@@ -2,7 +2,7 @@ from rest_framework.routers import SimpleRouter
...
@@ -2,7 +2,7 @@ from rest_framework.routers import SimpleRouter
from
.views
import
(
TableAllDevCmdDefineView
,
TableDevCmdNamePollView
,
from
.views
import
(
TableAllDevCmdDefineView
,
TableDevCmdNamePollView
,
TableSoftLimitAngleView
,
TableXproAllDevinfoView
,
TableSoftLimitAngleView
,
TableXproAllDevinfoView
,
TableAllDevCmdDefineView_1
,
TableDevCmdNamePollView_1
)
TableAllDevCmdDefineView_1
,
TableDevCmdNamePollView_1
)
from
.views
import
test
,
remove_protocol
from
.views
import
test
,
remove_protocol
,
protocol_add_version
from
django.urls
import
re_path
from
django.urls
import
re_path
router
=
SimpleRouter
()
router
=
SimpleRouter
()
...
@@ -16,6 +16,7 @@ router.register(r'dev_cmd_name_poll_1', TableDevCmdNamePollView_1)
...
@@ -16,6 +16,7 @@ router.register(r'dev_cmd_name_poll_1', TableDevCmdNamePollView_1)
urlpatterns
=
[
urlpatterns
=
[
re_path
(
r'^test/$'
,
test
),
re_path
(
r'^test/$'
,
test
),
re_path
(
r'^protocol/protocol_add_version/$'
,
protocol_add_version
),
re_path
(
r'^protocol/(?P<protocol_name>.+)/$'
,
remove_protocol
),
re_path
(
r'^protocol/(?P<protocol_name>.+)/$'
,
remove_protocol
),
]
]
...
...
device_data_op/views.py
View file @
de0d52c8
...
@@ -270,7 +270,7 @@ def test(request):
...
@@ -270,7 +270,7 @@ def test(request):
return
Response
(
status
=
status
.
HTTP_201_CREATED
)
return
Response
(
status
=
status
.
HTTP_201_CREATED
)
@api_view
([
'
delete
'
])
@api_view
([
'
DELETE
'
])
def
remove_protocol
(
request
,
protocol_name
):
def
remove_protocol
(
request
,
protocol_name
):
"""
"""
删除协议
删除协议
...
@@ -290,8 +290,130 @@ def remove_protocol(request, protocol_name):
...
@@ -290,8 +290,130 @@ def remove_protocol(request, protocol_name):
cmds
=
AllProtocolDefinAndVersion
.
objects
.
filter
(
protocol_name
=
protocol_name
)
.
all
()
cmds
=
AllProtocolDefinAndVersion
.
objects
.
filter
(
protocol_name
=
protocol_name
)
.
all
()
for
cmd
in
cmds
:
for
cmd
in
cmds
:
cmd_name
=
cmd
.
cmd_name
cmd_name
=
cmd
.
cmd_name
TableAllDevCmdDefine
.
objects
.
filter
(
cmd_name
=
cmd_name
)
.
delete
()
AllDevCmdDefineAndVersion
.
objects
.
filter
(
cmd_name
=
cmd_name
)
.
delete
()
cmd
.
delete
()
cmd
.
delete
()
return
Response
(
status
=
status
.
HTTP_204_NO_CONTENT
)
return
Response
(
status
=
status
.
HTTP_204_NO_CONTENT
)
@swagger_auto_schema
(
method
=
'post'
,
request_body
=
openapi
.
Schema
(
type
=
openapi
.
TYPE_OBJECT
,
properties
=
{
'protocol_name'
:
openapi
.
Schema
(
type
=
openapi
.
TYPE_STRING
),
'version_name'
:
openapi
.
Schema
(
type
=
openapi
.
TYPE_STRING
),
'is_extend'
:
openapi
.
Schema
(
type
=
openapi
.
TYPE_BOOLEAN
),
'extend_version_name'
:
openapi
.
Schema
(
type
=
openapi
.
TYPE_STRING
),
}
))
@api_view
([
'POST'
])
def
protocol_add_version
(
request
):
"""
协议添加版本
"""
protocol_name
=
request
.
data
.
get
(
'protocol_name'
)
version_name
=
request
.
data
.
get
(
'version_name'
)
is_extend
=
request
.
data
.
get
(
'is_extend'
)
extend_version_name
=
request
.
data
.
get
(
'extend_version_name'
)
if
version_name
is
None
or
protocol_name
is
None
:
return
Response
(
status
=
status
.
HTTP_400_BAD_REQUEST
)
if
is_extend
:
# 如果是继承版本,则需要判断继承的版本是否存在
if
extend_version_name
is
None
:
return
Response
(
status
=
status
.
HTTP_400_BAD_REQUEST
)
# current_version = CurrentDevVersion.objects.filter(protocol_name=protocol_name).first().version
# if current_version != extend_version_name:
# # 继承的版本和当前的版本不一样,需要将当前版本的指令和字段删除
# cmds = TableDevCmdNamePoll.objects.filter(protocol_name=protocol_name).all()
# for cmd in cmds:
# TableAllDevCmdDefine.objects.filter(cmd_name=cmd.cmd_name).delete()
# cmd.delete()
# # 获取继承版本的字段
# cmds = AllProtocolDefinAndVersion.objects.filter(protocol_name=protocol_name,
# version=extend_version_name).all()
# for cmd in cmds:
# TableDevCmdNamePoll(protocol_name=_cmd.protocol_name,
# cmd_name=_cmd.cmd_name,
# cmd_type=_cmd.cmd_type,
# encode=_cmd.encode,
# timing_cmd_cycle_period=_cmd.timing_cmd_cycle_period,
# cmd_explain=_cmd.cmd_explain).save()
# fields = AllDevCmdDefineAndVersion.objects.filter(cmd_name=cmd.cmd_name,
# version=extend_version_name).all()
# # 新增字段
# for field in fields:
# TableAllDevCmdDefine(cmd_name=_field.cmd_name,
# cmd_type=_field.cmd_type,
# fieldindex=_field.fieldindex,
# fieldname=_field.fieldname,
# fieldsize=_field.fieldsize,
# value=_field.value,
# minvalue=_field.minvalue,
# maxvalue=_field.maxvalue,
# datatype=_field.datatype,
# operation_in=_field.operation_in,
# operation_in_num=_field.operation_in_num,
# operation_out=_field.operation_out,
# operation_out_num=_field.operation_out_num,
# operabo_in=_field.operabo_in,
# operabo_out=_field.operabo_out,
# lua_script_in=_field.lua_script_in,
# lua_script_out=_field.lua_script_out).save()
# 获取继承版本的字段
cmds
=
AllProtocolDefinAndVersion
.
objects
.
filter
(
protocol_name
=
protocol_name
,
version
=
extend_version_name
)
.
all
()
for
cmd
in
cmds
:
# 给当前版本的指令和字段创建记录
_cmd
=
AllProtocolDefinAndVersion
(
protocol_name
=
protocol_name
,
cmd_name
=
cmd
.
cmd_name
,
cmd_type
=
cmd
.
cmd_type
,
encode
=
cmd
.
encode
,
timing_cmd_cycle_period
=
cmd
.
timing_cmd_cycle_period
,
cmd_explain
=
cmd
.
cmd_explain
,
version
=
version_name
)
_cmd
.
save
()
fields
=
AllDevCmdDefineAndVersion
.
objects
.
filter
(
cmd_name
=
cmd
.
cmd_name
,
version
=
extend_version_name
)
.
all
()
# 新增字段
for
field
in
fields
:
_field
=
AllDevCmdDefineAndVersion
(
cmd_name
=
field
.
cmd_name
,
cmd_type
=
field
.
cmd_type
,
fieldindex
=
field
.
fieldindex
,
fieldname
=
field
.
fieldname
,
fieldsize
=
field
.
fieldsize
,
value
=
field
.
value
,
minvalue
=
field
.
minvalue
,
maxvalue
=
field
.
maxvalue
,
datatype
=
field
.
datatype
,
operation_in
=
field
.
operation_in
,
operation_in_num
=
field
.
operation_in_num
,
operation_out
=
field
.
operation_out
,
operation_out_num
=
field
.
operation_out_num
,
operabo_in
=
field
.
operabo_in
,
operabo_out
=
field
.
operabo_out
,
lua_script_in
=
field
.
lua_script_in
,
lua_script_out
=
field
.
lua_script_out
,
version
=
version_name
)
_field
.
save
()
else
:
# 如果不用继承版本,先直接删除两张表上所有的记录
cmds
=
TableDevCmdNamePoll
.
objects
.
filter
(
protocol_name
=
protocol_name
)
.
all
()
for
cmd
in
cmds
:
cmd_name
=
cmd
.
cmd_name
TableAllDevCmdDefine
.
objects
.
filter
(
cmd_name
=
cmd_name
)
.
delete
()
cmd
.
delete
()
# 添加版本
protoocl_version
=
AllProtocolVersion
.
objects
.
filter
(
protocol_name
=
protocol_name
)
.
first
()
version
=
json
.
loads
(
protoocl_version
.
version_paths
)
version
.
append
({
"version"
:
version_name
})
protoocl_version
.
version_paths
=
json
.
dumps
(
version
)
protoocl_version
.
save
()
return
Response
(
status
=
status
.
HTTP_200_OK
)
frontend/src/components/protocol/CollapseTable.vue
View file @
de0d52c8
...
@@ -28,8 +28,9 @@
...
@@ -28,8 +28,9 @@
<el-button>
上传原始文件
</el-button>
<el-button>
上传原始文件
</el-button>
</el-upload>
</el-upload>
<el-button
v-else
@
click=
"downloadFile"
>
下载原始文件
</el-button>
<el-button
v-else
@
click=
"downloadFile"
>
下载原始文件
</el-button>
<el-button
@
click=
"newVersionDialog = true"
>
新增版本
</el-button>
<el-button
@
click=
"addCmdDialog = true"
>
新增指令
</el-button>
<el-button
@
click=
"addCmdDialog = true"
>
新增指令
</el-button>
<
el-button
@
click=
"deleteProtocol"
>
删除该版本协议
</el-button
>
<
!--
<el-button
@
click=
"deleteProtocol"
>
删除该版本协议
</el-button>
--
>
</div>
</div>
</div>
</div>
...
@@ -41,7 +42,7 @@
...
@@ -41,7 +42,7 @@
<template
#
title
>
<template
#
title
>
<div>
{{
cmd
.
cmd_name
+
' '
+
cmd
.
cmd_explain
+
' '
+
cmd
.
cmd_type
}}
</div>
<div>
{{
cmd
.
cmd_name
+
' '
+
cmd
.
cmd_explain
+
' '
+
cmd
.
cmd_type
}}
</div>
<div>
<div>
<el-button
type=
"
primary
"
text
@
click=
"removeCmd(cmd.id)"
>
删除
</el-button>
<el-button
type=
"
danger
"
text
@
click=
"removeCmd(cmd.id)"
>
删除
</el-button>
</div>
</div>
</
template
>
</
template
>
<protocol-table
<protocol-table
...
@@ -87,6 +88,33 @@
...
@@ -87,6 +88,33 @@
</span>
</span>
</
template
>
</
template
>
</el-dialog>
</el-dialog>
<el-dialog
v-model=
"newVersionDialog"
:width=
"500"
title=
"新增协议版本"
>
<el-form
:model=
"newVersionForm"
>
<el-form-item
prop=
"versionName"
label=
"版本名称"
:label-width=
"formLabelWidth"
>
<el-input
v-model=
"newVersionForm.versionName"
autocomplete=
"off"
/>
</el-form-item>
<el-form-item
prop=
"isExtend"
label=
"是否继承版本"
:label-width=
"formLabelWidth"
>
<el-switch
v-model=
"newVersionForm.isExtend"
/>
</el-form-item>
<el-form-item
v-show=
"newVersionForm.isExtend"
prop=
"extendVersionName"
label=
"继承版本名称"
:label-width=
"formLabelWidth"
>
<el-select
v-model=
"newVersionForm.extendVersionName"
>
<el-option
v-for=
"option in options"
:label=
"option.label"
:value=
"option.value"
>
</el-option>
</el-select>
</el-form-item>
</el-form>
<
template
#
footer
>
<span
class=
"dialog-footer"
>
<el-button
@
click=
"newVersionDialog = false"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"addNewVersion"
>
确定
</el-button>
</span>
</
template
>
</el-dialog>
</div>
</div>
</template>
</template>
...
@@ -98,6 +126,7 @@ import ProtocolTable from "./ProtocolTable.vue";
...
@@ -98,6 +126,7 @@ import ProtocolTable from "./ProtocolTable.vue";
import
type
{
DeviceProtocolResponse
,
ProtocolCmdResponse
}
from
'./types'
;
import
type
{
DeviceProtocolResponse
,
ProtocolCmdResponse
}
from
'./types'
;
import
{
useProtocolVersionStore
}
from
'@/stores/allProtocolVersion'
;
import
{
useProtocolVersionStore
}
from
'@/stores/allProtocolVersion'
;
import
axios
from
'axios'
;
import
axios
from
'axios'
;
import
request
from
'@/plugins/axios/requests'
;
const
addCmdDialog
=
ref
<
boolean
>
(
false
)
const
addCmdDialog
=
ref
<
boolean
>
(
false
)
const
currentVersion
=
ref
(
''
)
const
currentVersion
=
ref
(
''
)
...
@@ -190,6 +219,8 @@ const changeProtocolVersion = () => {
...
@@ -190,6 +219,8 @@ const changeProtocolVersion = () => {
protocol_name
:
props
.
name
,
protocol_name
:
props
.
name
,
})
})
.
then
((
res
)
=>
{
.
then
((
res
)
=>
{
console
.
log
(
res
);
const
{
cmds
}
=
res
.
data
const
{
cmds
}
=
res
.
data
cmdInfos
.
value
=
cmds
cmdInfos
.
value
=
cmds
// 转成和上面 ProtocolCmdResponse 一样的类型
// 转成和上面 ProtocolCmdResponse 一样的类型
...
@@ -337,6 +368,40 @@ const removeCmd = (id: number) => {
...
@@ -337,6 +368,40 @@ const removeCmd = (id: number) => {
})
})
}
}
// ===================================================
// 新增协议版本
const
newVersionDialog
=
ref
<
boolean
>
(
false
)
const
newVersionForm
=
reactive
({
versionName
:
''
,
isExtend
:
false
,
extendVersionName
:
''
,
})
const
addNewVersion
=
()
=>
{
// 继承版本问题
const
body
=
{
protocol_name
:
props
.
name
,
version_name
:
newVersionForm
.
versionName
,
is_extend
:
newVersionForm
.
isExtend
,
extend_version_name
:
newVersionForm
.
extendVersionName
,
}
console
.
log
(
body
);
request
.
post
(
'/api/protocol/protocol_add_version/'
,
body
)
.
then
((
res
)
=>
{
newVersionDialog
.
value
=
false
console
.
log
(
res
);
ElMessage
({
type
:
'success'
,
message
:
'操作成功'
,
})
options
.
value
.
push
({
value
:
newVersionForm
.
versionName
,
label
:
newVersionForm
.
versionName
})
currentVersion
.
value
=
newVersionForm
.
versionName
changeProtocolVersion
()
})
}
</
script
>
</
script
>
<
style
>
<
style
>
...
...
frontend/src/components/protocol/KitCollapse.vue
View file @
de0d52c8
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<template
#
title
>
<template
#
title
>
<div>
{{
item
}}
</div>
<div>
{{
item
}}
</div>
<div>
<div>
<el-button
type=
"
primary
"
text
@
click=
"removeProtocol(item)"
>
删除
</el-button>
<el-button
type=
"
danger
"
text
@
click=
"removeProtocol(item)"
>
删除
</el-button>
</div>
</div>
</
template
>
</
template
>
<div
style=
"margin: auto; width: 90%"
>
<div
style=
"margin: auto; width: 90%"
>
...
...
protocol_version_manage/services.py
View file @
de0d52c8
...
@@ -66,19 +66,17 @@ def update_device_protocol_and_cmds(protocol_name: str, version: str) -> Respons
...
@@ -66,19 +66,17 @@ def update_device_protocol_and_cmds(protocol_name: str, version: str) -> Respons
CurrentDevVersion
.
objects
.
filter
(
protocol_name
=
protocol_name
)
.
update
(
version
=
version
)
CurrentDevVersion
.
objects
.
filter
(
protocol_name
=
protocol_name
)
.
update
(
version
=
version
)
# 更新协议版本信息
# 更新协议版本信息
all_protocol
=
AllProtocolDefinAndVersion
.
objects
.
filter
(
protocol_name
=
protocol_name
)
.
all
()
current_version_protocols
=
AllProtocolDefinAndVersion
.
objects
.
filter
(
protocol_name
=
protocol_name
,
current_version_protocols
=
[
protocol
for
protocol
in
all_protocol
version
=
version
)
.
all
()
if
version
in
json
.
loads
(
protocol
.
version
)]
cmd_fields
=
[]
cmd_fields
=
[]
for
current_version_protocol
in
current_version_protocols
:
for
current_version_protocol
in
current_version_protocols
:
cmd_name
=
current_version_protocol
.
cmd_name
cmd_name
=
current_version_protocol
.
cmd_name
cmd_fields
.
extend
([
item
for
item
in
AllDevCmdDefineAndVersion
.
objects
.
filter
(
cmd_name
=
cmd_name
)
.
all
()
cmd_fields
.
extend
(
AllDevCmdDefineAndVersion
.
objects
.
filter
(
cmd_name
=
cmd_name
,
version
=
version
)
.
all
())
if
version
in
json
.
loads
(
item
.
version
)])
current_version_protocol_serializer
=
AllProtocolDefinAndVersionSerializer
(
current_version_protocols
,
many
=
True
)
current_version_protocol_serializer
=
AllProtocolDefinAndVersionSerializer
(
current_version_protocols
,
many
=
True
)
cmd_fields_serializer
=
AllDevCmdDefineAndVersionSerializer
(
cmd_fields
,
many
=
True
)
cmd_fields_serializer
=
AllDevCmdDefineAndVersionSerializer
(
cmd_fields
,
many
=
True
)
#
更新 device 所使用的命令
表数据
#
要先删除这,因为它使用的是 TableDevCmdNamePoll 的旧数据,更新 device 所使用的字段
表数据
try
:
try
:
TableAllDevCmdDefine
.
objects
.
filter
(
cmd_name__in
=
[
cmd
.
cmd_name
TableAllDevCmdDefine
.
objects
.
filter
(
cmd_name__in
=
[
cmd
.
cmd_name
for
cmd
in
TableDevCmdNamePoll
.
objects
.
filter
(
protocol_name
=
protocol_name
)
.
all
()])
.
delete
()
for
cmd
in
TableDevCmdNamePoll
.
objects
.
filter
(
protocol_name
=
protocol_name
)
.
all
()])
.
delete
()
...
@@ -88,7 +86,8 @@ def update_device_protocol_and_cmds(protocol_name: str, version: str) -> Respons
...
@@ -88,7 +86,8 @@ def update_device_protocol_and_cmds(protocol_name: str, version: str) -> Respons
except
Exception
as
e
:
except
Exception
as
e
:
print
(
e
)
print
(
e
)
return
Response
(
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
return
Response
(
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# 更新 device 所使用的协议表数据
# 更新 device 所使用的指令表数据
try
:
try
:
TableDevCmdNamePoll
.
objects
.
filter
(
protocol_name
=
protocol_name
)
.
delete
()
TableDevCmdNamePoll
.
objects
.
filter
(
protocol_name
=
protocol_name
)
.
delete
()
TableDevCmdNamePoll
.
objects
.
bulk_create
([
TableDevCmdNamePoll
(
TableDevCmdNamePoll
.
objects
.
bulk_create
([
TableDevCmdNamePoll
(
...
@@ -98,10 +97,14 @@ def update_device_protocol_and_cmds(protocol_name: str, version: str) -> Respons
...
@@ -98,10 +97,14 @@ def update_device_protocol_and_cmds(protocol_name: str, version: str) -> Respons
print
(
e
)
print
(
e
)
return
Response
(
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
return
Response
(
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# 返回数据
# 返回数据
,需要返回生成之后的数据,特别是 id,因此需要重新请求一次
cmds
=
[]
cmds
=
[]
for
protocol
in
current_version_protocol_serializer
.
data
:
new_cmds
=
TableDevCmdNamePoll
.
objects
.
filter
(
protocol_name
=
protocol_name
)
.
all
()
protocol
[
'fields'
]
=
sorted
([
item
for
item
in
cmd_fields_serializer
.
data
new_cmds_serializer
=
TableDevCmdNamePollSerializer
(
new_cmds
,
many
=
True
)
new_cmd_fields
=
TableAllDevCmdDefine
.
objects
.
filter
(
cmd_name__in
=
[
cmd
.
cmd_name
for
cmd
in
new_cmds
])
.
all
()
new_cmd_fields_serializer
=
TableAllDevCmdDefineSerializer
(
new_cmd_fields
,
many
=
True
)
for
protocol
in
new_cmds_serializer
.
data
:
protocol
[
'fields'
]
=
sorted
([
item
for
item
in
new_cmd_fields_serializer
.
data
if
item
[
'cmd_name'
]
==
protocol
[
'cmd_name'
]],
if
item
[
'cmd_name'
]
==
protocol
[
'cmd_name'
]],
key
=
lambda
item
:
item
[
'fieldindex'
])
key
=
lambda
item
:
item
[
'fieldindex'
])
cmds
.
append
(
protocol
)
cmds
.
append
(
protocol
)
...
...
xdc.sqlite
View file @
de0d52c8
No preview for this file type
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