Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
H
haikang-client
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
杨立
haikang-client
Commits
fa6db80a
提交
fa6db80a
authored
11月 24, 2021
作者:
wangqiang
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/master'
上级
92c4e702
4f8daced
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
85 行增加
和
32 行删除
+85
-32
ConfigController.java
...rc/main/java/com/priusis/controller/ConfigController.java
+12
-0
ProgramController.java
...c/main/java/com/priusis/controller/ProgramController.java
+73
-32
没有找到文件。
apq-pc-client/src/main/java/com/priusis/controller/ConfigController.java
浏览文件 @
fa6db80a
package
com
.
priusis
.
controller
;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.json.JSONArray
;
import
cn.hutool.json.JSONObject
;
import
cn.hutool.json.JSONUtil
;
...
...
@@ -48,6 +49,17 @@ public class ConfigController {
return
R
.
success
();
}
@PostMapping
(
value
=
"save_auto_upgrade"
)
public
R
<
Void
>
saveAutoUpgrade
(
@RequestBody
Map
<
String
,
String
>
params
)
throws
IOException
{
SysConfigUtil
.
saveProperty
(
"auto.upgrade"
,
params
.
get
(
"enable"
));
return
R
.
success
();
}
@GetMapping
(
value
=
"get_auto_upgrade"
)
public
R
<
Boolean
>
getAutoUpgrade
()
throws
IOException
{
return
R
.
success
(
Convert
.
toBool
(
SysConfigUtil
.
getProperty
(
"auto.upgrade"
),
false
));
}
@GetMapping
(
value
=
"get_device_sn"
)
public
R
<
String
>
getDeviceSN
()
throws
IOException
{
return
R
.
success
(
SysConfigUtil
.
getProperty
(
"device.sn"
));
...
...
apq-pc-client/src/main/java/com/priusis/controller/ProgramController.java
浏览文件 @
fa6db80a
...
...
@@ -19,6 +19,7 @@ import com.priusis.util.SysConfigUtil;
import
lombok.SneakyThrows
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -98,19 +99,25 @@ public class ProgramController {
map
.
put
(
"status"
,
SET
.
contains
(
key
)
?
"1"
:
MAP
.
containsKey
(
key
)
?
"2"
:
"0"
);
return
map
;
})
/*.peek(m -> programs.stream()
.collect(Collectors.toMap(p -> StrUtil.similar(p.get("name").toLowerCase(), m.get("name").toLowerCase()),
p -> p.getOrDefault("version", ""), (l, r) -> r))
.entrySet()
.stream()
.max(Map.Entry.comparingByKey())
.filter(e -> e.getKey() >= MIN_MATCH)
.filter(e -> StrUtil.isNotBlank(e.getValue()))
.ifPresent(e -> m.put("localVersion", e.getValue())))*/
.
peek
(
m
->
programs
.
stream
()
.
filter
(
p
->
p
.
get
(
"name"
).
equalsIgnoreCase
(
m
.
get
(
"name"
)))
.
findFirst
()
.
ifPresent
(
p
->
m
.
put
(
"localVersion"
,
p
.
get
(
"version"
))))
/*.peek(m -> */
.
peek
(
m
->
{
if
(
type
.
equals
(
"install"
))
{
programs
.
stream
()
.
filter
(
p
->
p
.
get
(
"name"
).
equalsIgnoreCase
(
m
.
get
(
"name"
)))
.
findFirst
()
.
ifPresent
(
p
->
m
.
put
(
"localVersion"
,
p
.
get
(
"version"
)));
}
else
{
programs
.
stream
()
.
collect
(
Collectors
.
toMap
(
p
->
StrUtil
.
similar
(
p
.
get
(
"name"
).
toLowerCase
(),
m
.
get
(
"name"
).
toLowerCase
()),
p
->
p
.
getOrDefault
(
"version"
,
""
),
(
l
,
r
)
->
r
))
.
entrySet
()
.
stream
()
.
max
(
Map
.
Entry
.
comparingByKey
())
.
filter
(
e
->
e
.
getKey
()
>=
MIN_MATCH
)
.
filter
(
e
->
StrUtil
.
isNotBlank
(
e
.
getValue
()))
.
ifPresent
(
e
->
m
.
put
(
"localVersion"
,
e
.
getValue
()));
}
})
.
collect
(
Collectors
.
toList
());
return
R
.
success
(
page
.
setRecords
(
list
));
}
...
...
@@ -206,26 +213,28 @@ public class ProgramController {
}
@GetMapping
(
value
=
"get_version"
)
public
R
<
String
>
getVersion
(
@RequestParam
@NotBlank
String
name
)
throws
IOException
{
@GetMapping
(
value
=
"{type}/get_version"
)
public
R
<
String
>
getVersion
(
@PathVariable
@Pattern
(
regexp
=
"install|upgrade"
)
String
type
,
@RequestParam
@NotBlank
String
name
)
throws
IOException
{
installedProgramCache
.
loadProgramListJob
();
/*return installedProgramCache.getPrograms().stream()
.collect(Collectors.toMap(p -> StrUtil.similar(p.get("name").toLowerCase(), name.toLowerCase()),
p -> p.getOrDefault("version", ""), (l, r) -> r))
.entrySet()
.stream()
.max(Map.Entry.comparingByKey())
.filter(e -> e.getKey() >= MIN_MATCH)
.filter(e -> StrUtil.isNotBlank(e.getValue()))
.map(Map.Entry::getValue)
.map(R::success)
.orElseGet(R::success);*/
return
installedProgramCache
.
getPrograms
().
stream
()
.
filter
(
p
->
p
.
get
(
"name"
).
equalsIgnoreCase
(
name
))
.
findFirst
()
.
map
(
m
->
m
.
get
(
"version"
))
.
map
(
R:
:
success
)
.
orElseGet
(
R:
:
success
);
return
type
.
equals
(
"install"
)
?
installedProgramCache
.
getPrograms
().
stream
()
.
filter
(
p
->
p
.
get
(
"name"
).
equalsIgnoreCase
(
name
))
.
findFirst
()
.
map
(
m
->
m
.
get
(
"version"
))
.
map
(
R:
:
success
)
.
orElseGet
(
R:
:
success
)
:
installedProgramCache
.
getPrograms
().
stream
()
.
collect
(
Collectors
.
toMap
(
p
->
StrUtil
.
similar
(
p
.
get
(
"name"
).
toLowerCase
(),
name
.
toLowerCase
()),
p
->
p
.
getOrDefault
(
"version"
,
""
),
(
l
,
r
)
->
r
))
.
entrySet
()
.
stream
()
.
max
(
Map
.
Entry
.
comparingByKey
())
.
filter
(
e
->
e
.
getKey
()
>=
MIN_MATCH
)
.
filter
(
e
->
StrUtil
.
isNotBlank
(
e
.
getValue
()))
.
map
(
Map
.
Entry
::
getValue
)
.
map
(
R:
:
success
)
.
orElseGet
(
R:
:
success
);
}
...
...
@@ -276,4 +285,36 @@ public class ProgramController {
System
.
out
.
println
(
"cmd /c tasklist -fi "
+
'"'
+
"imagename ne NT AUTHORITY SYSTEM"
+
'"'
+
" -fi "
+
'"'
+
"imagename ne NT AUTHORITY SYSTEM"
+
'"'
+
" /fo csv"
);
}
@Scheduled
(
fixedDelay
=
60000
)
protected
void
autoUpgradeJob
()
{
try
{
boolean
autoUpgrade
=
Convert
.
toBool
(
SysConfigUtil
.
getProperty
(
"auto.upgrade"
),
false
);
if
(!
autoUpgrade
)
return
;
File
dir
=
new
File
(
SysConfigUtil
.
getProperty
(
"download.path"
,
System
.
getProperty
(
"user.dir"
).
substring
(
0
,
3
)
+
"apqdownloads"
));
if
(!
dir
.
exists
())
dir
.
mkdirs
();
list
(
"upgrade"
,
1
,
10000
).
getData
().
getRecords
()
.
parallelStream
()
.
filter
(
m
->
ObjectUtil
.
notEqual
(
m
.
get
(
"version"
),
m
.
get
(
"localVersion"
)))
.
forEach
(
m
->
{
HttpResponse
rsp
=
HttpUtil
.
createGet
(
m
.
get
(
"url"
)).
execute
(
true
);
File
file
=
rsp
.
writeBodyForFile
(
dir
,
null
);
int
exitVal
=
-
1
;
try
{
exitVal
=
Runtime
.
getRuntime
().
exec
(
"cmd /c \""
+
file
.
getPath
()
+
"\""
).
waitFor
();
}
catch
(
Exception
e
)
{
log
.
error
(
"执行安装文件 {} 失败"
,
file
.
getPath
(),
e
);
}
if
(
exitVal
==
0
)
{
String
reqUrl
=
gateway
+
StrUtil
.
format
(
upgradeStatusUpIssueUrl
,
MacAddrUtil
.
get
(),
m
.
get
(
"id"
));
HttpUtil
.
post
(
reqUrl
,
(
String
)
null
);
}
});
}
catch
(
Exception
e
)
{
log
.
error
(
"自动升级任务执行异常"
,
e
);
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论