Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
entrance_api
Project
Project
Details
Activity
Releases
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
王琮
entrance_api
Commits
fb71a47f
Commit
fb71a47f
authored
Dec 06, 2022
by
盖献康
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/dev' into dev
parents
99451bd1
016e3a04
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
136 additions
and
29 deletions
+136
-29
VisitDataInviteDto.java
...g/rcisoft/integration/jieLink/dto/VisitDataInviteDto.java
+10
-0
JieLinkServiceImpl.java
.../integration/jieLink/service/impl/JieLinkServiceImpl.java
+120
-27
application-dev-conf.yml
src/main/resources/application-dev-conf.yml
+4
-0
VisitInfomationMapper.xml
src/main/resources/mapper/VisitInfomationMapper.xml
+2
-2
No files found.
src/main/java/org/rcisoft/integration/jieLink/dto/VisitDataInviteDto.java
View file @
fb71a47f
...
...
@@ -2,6 +2,9 @@ package org.rcisoft.integration.jieLink.dto;
import
lombok.Data
;
import
java.util.List
;
import
java.util.Map
;
/**
* 邀访记录主表
*/
...
...
@@ -57,4 +60,11 @@ public class VisitDataInviteDto {
*/
private
String
content
;
/**
* <pre>
* 设备区域列表
* </pre>
*/
private
List
<
Map
<
String
,
String
>>
deviceApList
;
}
src/main/java/org/rcisoft/integration/jieLink/service/impl/JieLinkServiceImpl.java
View file @
fb71a47f
...
...
@@ -15,13 +15,16 @@ import org.rcisoft.integration.jieLink.dto.*;
import
org.rcisoft.integration.jieLink.service.IJieLinkService
;
import
org.rcisoft.sys.devices.entity.Devices
;
import
org.rcisoft.sys.devices.service.DevicesService
;
import
org.rcisoft.sys.sysuser.dao.SysDictDataRepositorys
;
import
org.rcisoft.sys.sysuser.entity.DoorRecord
;
import
org.rcisoft.sys.sysuser.entity.SysDictData
;
import
org.rcisoft.sys.sysuser.entity.SysUser
;
import
org.rcisoft.sys.sysuser.service.DoorRecordService
;
import
org.rcisoft.sys.sysuser.service.SysUserService
;
import
org.rcisoft.sys.visit.entity.VisitInfoMation
;
import
org.rcisoft.sys.visit.entity.VisitUser
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.http.*
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
...
...
@@ -42,16 +45,19 @@ public class JieLinkServiceImpl implements IJieLinkService {
/**
* 捷顺服务地址
*/
@Value
(
"${jieLink.apiUrl}"
)
private
String
jieLinkUri
;
/**
* 接口用户
*/
@Value
(
"${jieLink.account}"
)
private
String
jieLinkUser
;
/**
* 接口密码
*/
@Value
(
"${jieLink.pwd}"
)
private
String
jieLinkPwd
;
...
...
@@ -67,6 +73,9 @@ public class JieLinkServiceImpl implements IJieLinkService {
@Autowired
private
DevicesService
devicesService
;
@Autowired
private
SysDictDataRepositorys
dictDataRepositorys
;
/**
* 获取签名所需相关参数
...
...
@@ -87,6 +96,7 @@ public class JieLinkServiceImpl implements IJieLinkService {
try
{
ResponseEntity
<
String
>
responseEntity
=
restTemplate
.
postForEntity
(
uriAddr
.
toString
(),
httpEntity
,
String
.
class
);
if
(
HttpStatus
.
OK
.
value
()
==
responseEntity
.
getStatusCode
().
value
())
{
log
.
debug
(
"getAppKeyInfo接口返回信息:{0}"
,
responseEntity
.
getBody
());
JieLinkResultDto
<
List
<
AppInfoDto
>>
resultData
=
JSONObject
.
parseObject
(
responseEntity
.
getBody
(),
JieLinkResultDto
.
class
);
if
(
StringUtils
.
equals
(
resultData
.
getCode
(),
"0"
)){
List
<
AppInfoDto
>
appInfoDtoList
=
resultData
.
getData
();
...
...
@@ -108,6 +118,7 @@ public class JieLinkServiceImpl implements IJieLinkService {
}
}
else
{
//请求失败啦
log
.
error
(
"getAppKeyInfo接口返回错误信息:{0}"
,
responseEntity
.
getBody
());
return
null
;
}
}
catch
(
Exception
ex
){
...
...
@@ -133,6 +144,7 @@ public class JieLinkServiceImpl implements IJieLinkService {
ResponseEntity
<
String
>
responseEntity
=
restTemplate
.
postForEntity
(
uriAddr
.
toString
(),
httpEntity
,
String
.
class
);
try
{
if
(
HttpStatus
.
OK
.
value
()
==
responseEntity
.
getStatusCode
().
value
())
{
log
.
debug
(
"pushAddUserData接口返回信息:{0}"
,
responseEntity
.
getBody
());
JieLinkResultDto
<
JieLinkPersonDto
>
resultData
=
JSONObject
.
parseObject
(
responseEntity
.
getBody
(),
JieLinkResultDto
.
class
);
if
(
StringUtils
.
equals
(
resultData
.
getCode
(),
"0"
)){
JieLinkPersonDto
persion
=
resultData
.
getData
();
...
...
@@ -159,6 +171,7 @@ public class JieLinkServiceImpl implements IJieLinkService {
}
}
else
{
//请求失败啦
log
.
error
(
"pushAddUserData接口返回错误信息:{0}"
,
responseEntity
.
getBody
());
return
false
;
}
}
catch
(
Exception
ex
){
...
...
@@ -167,6 +180,7 @@ public class JieLinkServiceImpl implements IJieLinkService {
}
}
else
{
//认证信息获取失败
log
.
error
(
"pushAddUserData接口获取认证参数失败"
);
return
false
;
}
}
...
...
@@ -179,36 +193,44 @@ public class JieLinkServiceImpl implements IJieLinkService {
*/
@Override
public
boolean
pushModifyUserData
(
SysUser
userData
)
{
String
apiUri
=
"/api/base/updateperson"
;
HttpHeaders
headers
=
this
.
loadHeaderHandle
();
if
(
headers
!=
null
){
JieLinkPersonDto
pushData
=
this
.
convertUserBean
(
userData
);
pushData
.
setPersonId
(
""
);
//TODO 此处缺失关联捷顺系统的ID
HttpEntity
<
JieLinkPersonDto
>
httpEntity
=
new
HttpEntity
<>(
pushData
,
headers
);
StringBuffer
uriAddr
=
new
StringBuffer
();
uriAddr
.
append
(
jieLinkUri
).
append
(
apiUri
);
ResponseEntity
<
String
>
responseEntity
=
restTemplate
.
postForEntity
(
uriAddr
.
toString
(),
httpEntity
,
String
.
class
);
try
{
if
(
HttpStatus
.
OK
.
value
()
==
responseEntity
.
getStatusCode
().
value
())
{
JieLinkResultDto
<
JieLinkPersonDto
>
resultData
=
JSONObject
.
parseObject
(
responseEntity
.
getBody
(),
JieLinkResultDto
.
class
);
if
(
StringUtils
.
equals
(
resultData
.
getCode
(),
"0"
)){
return
true
;
if
(
userData
!=
null
&&
StringUtils
.
isNotBlank
(
userData
.
getPersonId
())){
String
apiUri
=
"/api/base/updateperson"
;
HttpHeaders
headers
=
this
.
loadHeaderHandle
();
if
(
headers
!=
null
){
JieLinkPersonDto
pushData
=
this
.
convertUserBean
(
userData
);
pushData
.
setPersonId
(
userData
.
getPersonId
());
HttpEntity
<
JieLinkPersonDto
>
httpEntity
=
new
HttpEntity
<>(
pushData
,
headers
);
StringBuffer
uriAddr
=
new
StringBuffer
();
uriAddr
.
append
(
jieLinkUri
).
append
(
apiUri
);
ResponseEntity
<
String
>
responseEntity
=
restTemplate
.
postForEntity
(
uriAddr
.
toString
(),
httpEntity
,
String
.
class
);
try
{
if
(
HttpStatus
.
OK
.
value
()
==
responseEntity
.
getStatusCode
().
value
())
{
log
.
debug
(
"pushModifyUserData接口返回信息:{0}"
,
responseEntity
.
getBody
());
JieLinkResultDto
<
JieLinkPersonDto
>
resultData
=
JSONObject
.
parseObject
(
responseEntity
.
getBody
(),
JieLinkResultDto
.
class
);
if
(
StringUtils
.
equals
(
resultData
.
getCode
(),
"0"
)){
return
true
;
}
else
{
log
.
error
(
"pushAddUserData接口返回错误信息:"
+
resultData
.
getMsg
());
//请求返回结果错误啦
return
false
;
}
}
else
{
log
.
error
(
"pushAddUserData接口返回错误信息:"
+
resultData
.
getMsg
());
//请求返回结果错误啦
//请求失败啦
log
.
error
(
"pushAddUserData接口返回错误信息:{0}"
,
responseEntity
.
getBody
());
return
false
;
}
}
else
{
//请求失败啦
}
catch
(
Exception
ex
)
{
log
.
error
(
ex
.
getMessage
(),
ex
);
return
false
;
}
}
catch
(
Exception
ex
){
log
.
error
(
ex
.
getMessage
(),
ex
);
}
else
{
//认证信息获取失败
log
.
error
(
"pushAddUserData接口获取认证参数失败"
);
return
false
;
}
}
else
{
//认证信息获取失败
return
fals
e
;
log
.
error
(
"当前用户没有捷顺系统的ID,无法更新"
);
return
tru
e
;
}
}
...
...
@@ -264,6 +286,7 @@ public class JieLinkServiceImpl implements IJieLinkService {
try
{
if
(
HttpStatus
.
OK
.
value
()
==
responseEntity
.
getStatusCode
().
value
())
{
//后续处理逻辑
log
.
debug
(
"pushVisitorData接口返回信息:{0}"
,
responseEntity
.
getBody
());
JieLinkResultDto
<
JSONObject
>
resultData
=
JSONObject
.
parseObject
(
responseEntity
.
getBody
(),
JieLinkResultDto
.
class
);
if
(
StringUtils
.
equals
(
resultData
.
getCode
(),
"0"
)){
return
true
;
...
...
@@ -274,6 +297,7 @@ public class JieLinkServiceImpl implements IJieLinkService {
}
}
else
{
//请求失败啦
log
.
error
(
"pushVisitorData接口返回错误信息:{0}"
,
responseEntity
.
getBody
());
return
false
;
}
}
catch
(
Exception
ex
){
...
...
@@ -282,6 +306,7 @@ public class JieLinkServiceImpl implements IJieLinkService {
}
}
else
{
//认证信息获取失败
log
.
error
(
"pushVisitorData接口获取认证参数失败"
);
return
false
;
}
}
...
...
@@ -314,6 +339,7 @@ public class JieLinkServiceImpl implements IJieLinkService {
ResponseEntity
<
String
>
responseEntity
=
restTemplate
.
postForEntity
(
uriAddr
.
toString
(),
httpEntity
,
String
.
class
);
try
{
if
(
HttpStatus
.
OK
.
value
()
==
responseEntity
.
getStatusCode
().
value
())
{
log
.
debug
(
"cancelVisitorData接口返回信息:{0}"
,
responseEntity
.
getBody
());
JieLinkResultDto
resultData
=
JSONObject
.
parseObject
(
responseEntity
.
getBody
(),
JieLinkResultDto
.
class
);
if
(
StringUtils
.
equals
(
resultData
.
getCode
(),
"0"
)){
return
true
;
...
...
@@ -324,6 +350,7 @@ public class JieLinkServiceImpl implements IJieLinkService {
}
}
else
{
//请求失败啦
log
.
error
(
"cancelVisitorData接口返回错误信息:{0}"
,
responseEntity
.
getBody
());
return
false
;
}
}
catch
(
Exception
ex
){
...
...
@@ -332,10 +359,34 @@ public class JieLinkServiceImpl implements IJieLinkService {
}
}
else
{
//认证信息获取失败
log
.
error
(
"cancelVisitorData接口获取认证参数失败"
);
return
false
;
}
}
/**
* 所有设备ID
*/
public
static
List
<
Map
<
String
,
String
>>
deviceGuidAllArray
=
new
ArrayList
<>();
/**
* 门口设备集合
*/
public
static
List
<
Map
<
String
,
String
>>
deviceGuidInArray
=
new
ArrayList
<>();
static
{
deviceGuidAllArray
.
add
(
new
HashMap
(){{
put
(
"deviceApGuid"
,
"1"
);}});
deviceGuidAllArray
.
add
(
new
HashMap
(){{
put
(
"deviceApGuid"
,
"2"
);}});
deviceGuidAllArray
.
add
(
new
HashMap
(){{
put
(
"deviceApGuid"
,
"3"
);}});
deviceGuidAllArray
.
add
(
new
HashMap
(){{
put
(
"deviceApGuid"
,
"4"
);}});
deviceGuidAllArray
.
add
(
new
HashMap
(){{
put
(
"deviceApGuid"
,
"5"
);}});
deviceGuidInArray
.
add
(
new
HashMap
(){{
put
(
"deviceApGuid"
,
"1"
);}});
}
/**
* 邀访记录转换
* @param infoMation
...
...
@@ -344,11 +395,30 @@ public class JieLinkServiceImpl implements IJieLinkService {
private
JSONObject
convertVisitorData
(
VisitInfoMation
infoMation
){
JSONObject
result
=
new
JSONObject
();
VisitDataInviteDto
manData
=
new
VisitDataInviteDto
();
//TODO 此处需要沟通下才行
manData
.
setPersonId
(
sysUserService
.
getPersionIdByUserId
(
infoMation
.
getUserId
()));
//转换ID
manData
.
setItemId
(
infoMation
.
getItemId
());
//邀访记录
//生成邀访时间格式的JSON字符串
manData
.
setTimeDesc
(
""
);
//邀访时间格式 需要根据两个字段以及数据字典中对应的类型进行计算得到开始和结束时间
//TODO 生成邀访时间格式的JSON字符串
Date
visitRealTime
=
infoMation
.
getVisitRealTime
();
SysDictData
queryDicData
=
new
SysDictData
();
queryDicData
.
setDictType
(
"timeThreshold"
);
queryDicData
.
setFlag
(
"1"
);
queryDicData
.
setFlag
(
"1"
);
List
<
SysDictData
>
dictDataList
=
dictDataRepositorys
.
querySysDictDatas
(
queryDicData
);
JSONObject
timeObj
=
new
JSONObject
();
for
(
SysDictData
dicData:
dictDataList
){
String
dictValue
=
dicData
.
getDictValue
();
//此处可能会有类型转换报错的BUG
int
factor
=
Integer
.
parseInt
(
dictValue
);
String
dictLabel
=
dicData
.
getDictLabel
();
if
(
StringUtils
.
equals
(
"advance"
,
dictLabel
)){
Date
startTime
=
new
Date
(
visitRealTime
.
getTime
()-(
factor
*
60
*
1000
));
timeObj
.
put
(
"sd"
,
DateUtil
.
format
(
startTime
,
"yyyy-MM-dd HH:mm:ss"
));
}
else
if
(
StringUtils
.
equals
(
"late"
,
dictLabel
)){
Date
startTime
=
new
Date
(
visitRealTime
.
getTime
()+(
factor
*
60
*
1000
));
timeObj
.
put
(
"ed"
,
DateUtil
.
format
(
startTime
,
"yyyy-MM-dd HH:mm:ss"
));
}
}
manData
.
setTimeDesc
(
timeObj
.
toJSONString
());
//邀访时间格式 需要根据两个字段以及数据字典中对应的类型进行计算得到开始和结束时间
manData
.
setVisitorType
(
"3"
);
//访客类型
//到访事由 两个字段做或判断
if
(
StringUtils
.
isNotBlank
(
infoMation
.
getVisitReason
())){
...
...
@@ -356,7 +426,24 @@ public class JieLinkServiceImpl implements IJieLinkService {
}
else
{
manData
.
setContent
(
infoMation
.
getVisitReasonOther
());
}
//访问区域设置
if
(
StringUtils
.
isNotBlank
(
infoMation
.
getVisitRegionCode
())){
String
[]
codeArray
=
infoMation
.
getVisitRegionCode
().
split
(
","
);
if
(
codeArray
.
length
==
1
){
//判断设备是办公楼 则认为是全部设备,相反则只有门口的设备
if
(
StringUtils
.
equals
(
"0"
,
codeArray
[
0
])){
manData
.
setDeviceApList
(
deviceGuidAllArray
);
}
else
{
manData
.
setDeviceApList
(
deviceGuidInArray
);
}
}
else
if
(
codeArray
.
length
==
2
){
//两个都选了,则认为是所有设备全部开启
manData
.
setDeviceApList
(
deviceGuidAllArray
);
}
}
else
{
//默认只给门口设备的权限
manData
.
setDeviceApList
(
deviceGuidInArray
);
}
List
<
VisitDataSubItemDto
>
userList
=
new
ArrayList
<>();
if
(
infoMation
.
getUserList
()!=
null
&&
!
infoMation
.
getUserList
().
isEmpty
()){
List
<
VisitUser
>
userDataList
=
infoMation
.
getUserList
();
...
...
@@ -402,6 +489,7 @@ public class JieLinkServiceImpl implements IJieLinkService {
ResponseEntity
<
String
>
responseEntity
=
restTemplate
.
postForEntity
(
uriAddr
.
toString
(),
httpEntity
,
String
.
class
);
try
{
if
(
HttpStatus
.
OK
.
value
()
==
responseEntity
.
getStatusCode
().
value
())
{
log
.
debug
(
"pullVisitUserQrCode接口返回信息:{0}"
,
responseEntity
.
getBody
());
JieLinkResultDto
<
JSONObject
>
resultData
=
JSONObject
.
parseObject
(
responseEntity
.
getBody
(),
JieLinkResultDto
.
class
);
if
(
StringUtils
.
equals
(
resultData
.
getCode
(),
"0"
)){
JSONObject
data
=
resultData
.
getData
();
...
...
@@ -411,12 +499,13 @@ public class JieLinkServiceImpl implements IJieLinkService {
return
null
;
}
}
else
{
log
.
error
(
"
cancelVisitorData
接口返回错误信息:"
+
resultData
.
getMsg
());
log
.
error
(
"
pullVisitUserQrCode
接口返回错误信息:"
+
resultData
.
getMsg
());
//请求返回结果错误啦
return
null
;
}
}
else
{
//请求失败啦
log
.
error
(
"pullVisitUserQrCode接口返回错误信息:{0}"
,
responseEntity
.
getBody
());
return
null
;
}
}
catch
(
Exception
ex
){
...
...
@@ -425,6 +514,7 @@ public class JieLinkServiceImpl implements IJieLinkService {
}
}
else
{
//认证信息获取失败
log
.
error
(
"pullVisitUserQrCode接口获取认证参数失败"
);
return
null
;
}
}
...
...
@@ -552,6 +642,7 @@ public class JieLinkServiceImpl implements IJieLinkService {
ResponseEntity
<
String
>
responseEntity
=
restTemplate
.
postForEntity
(
uriAddr
.
toString
(),
httpEntity
,
String
.
class
);
try
{
if
(
HttpStatus
.
OK
.
value
()
==
responseEntity
.
getStatusCode
().
value
())
{
log
.
debug
(
"syncDeviceInfo接口返回信息:{0}"
,
responseEntity
.
getBody
());
JieLinkResultDto
<
List
<
Devices
>>
resultData
=
JSONObject
.
parseObject
(
responseEntity
.
getBody
(),
JieLinkResultDto
.
class
);
if
(
StringUtils
.
equals
(
resultData
.
getCode
(),
"0"
)){
List
<
Devices
>
devicesList
=
resultData
.
getData
();
...
...
@@ -573,12 +664,14 @@ public class JieLinkServiceImpl implements IJieLinkService {
log
.
error
(
"syncDeviceInfo接口返回错误信息:"
+
resultData
.
getMsg
());
}
}
else
{
log
.
error
(
"syncDeviceInfo接口返回错误信息:{0}"
,
responseEntity
.
getBody
());
}
}
catch
(
Exception
ex
){
log
.
error
(
ex
.
getMessage
(),
ex
);
}
}
else
{
//认证信息获取失败
log
.
error
(
"syncDeviceInfo接口获取认证参数失败"
);
}
}
...
...
src/main/resources/application-dev-conf.yml
View file @
fb71a47f
...
...
@@ -90,3 +90,7 @@ wx:
appId
:
wx16cfb2d12e4ab57c
secret
:
37556072ad536b8d9d6cf5fb638fec88
timeOut
:
3600
jieLink
:
apiUrl
:
http://192.168.18.192:8091
account
:
9999
pwd
:
123456
\ No newline at end of file
src/main/resources/mapper/VisitInfomationMapper.xml
View file @
fb71a47f
...
...
@@ -168,10 +168,10 @@
vi.create_date desc
</if>
<if
test=
"entity.sort == '1'.toString()"
>
vi.create_date
vi.create_date
desc
</if>
<if
test=
"entity.sort == '2'.toString()"
>
vi.visit_
date
vi.visit_
real_time desc
</if>
</if>
</select>
...
...
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