Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
basic-api-boot
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Basic
basic-api-boot
Commits
c216be5e
提交
c216be5e
authored
5月 13, 2022
作者:
方治民
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 重构空间信息字段采用 4326 投影方式、围栏/区域进出标记、增加 @XxlJob 异常消息日志打印、增加围栏报警记录表创建
上级
8e6f4263
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
22 个修改的文件
包含
347 行增加
和
39 行删除
+347
-39
Broadcast.java
.../main/java/com/yiring/app/domain/broadcast/Broadcast.java
+2
-4
District.java
...rc/main/java/com/yiring/app/domain/district/District.java
+1
-1
DistrictRepository.java
...va/com/yiring/app/domain/district/DistrictRepository.java
+9
-0
LocationBeacon.java
...n/java/com/yiring/app/domain/location/LocationBeacon.java
+1
-0
LocationFence.java
...in/java/com/yiring/app/domain/location/LocationFence.java
+8
-2
LocationFenceAlarm.java
...va/com/yiring/app/domain/location/LocationFenceAlarm.java
+95
-0
LocationFenceAlarmRepository.java
...ing/app/domain/location/LocationFenceAlarmRepository.java
+17
-0
LocationFenceRepository.java
...m/yiring/app/domain/location/LocationFenceRepository.java
+9
-0
LocationFenceRuleRepository.java
...ring/app/domain/location/LocationFenceRuleRepository.java
+1
-1
LocationLog.java
...main/java/com/yiring/app/domain/location/LocationLog.java
+6
-0
LocationTag.java
...main/java/com/yiring/app/domain/location/LocationTag.java
+1
-0
LocationTurnover.java
...java/com/yiring/app/domain/location/LocationTurnover.java
+76
-0
LocationTurnoverRepository.java
...iring/app/domain/location/LocationTurnoverRepository.java
+17
-0
AccidentSpot.java
...in/java/com/yiring/app/domain/rehearsal/AccidentSpot.java
+1
-1
EvacuationZone.java
.../java/com/yiring/app/domain/rehearsal/EvacuationZone.java
+1
-1
Video.java
app/src/main/java/com/yiring/app/domain/video/Video.java
+1
-0
MockPositionMessageJob.java
.../main/java/com/yiring/app/job/MockPositionMessageJob.java
+49
-15
PositionMessageHandler.java
...om/yiring/app/rabbit/receiver/PositionMessageHandler.java
+3
-3
PositionMessageServiceImpl.java
.../app/service/message/impl/PositionMessageServiceImpl.java
+0
-0
GeoUtils.java
app/src/main/java/com/yiring/app/util/GeoUtils.java
+10
-7
application-dev.yml
app/src/main/resources/application-dev.yml
+4
-4
XxlJobAspect.java
.../src/main/java/com/yiring/common/aspect/XxlJobAspect.java
+35
-0
没有找到文件。
app/src/main/java/com/yiring/app/domain/broadcast/Broadcast.java
浏览文件 @
c216be5e
...
@@ -4,10 +4,7 @@ package com.yiring.app.domain.broadcast;
...
@@ -4,10 +4,7 @@ package com.yiring.app.domain.broadcast;
import
java.io.Serial
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
javax.persistence.Entity
;
import
javax.persistence.*
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.Id
;
import
javax.persistence.Table
;
import
lombok.*
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
lombok.experimental.FieldNameConstants
;
...
@@ -52,6 +49,7 @@ public class Broadcast implements Serializable {
...
@@ -52,6 +49,7 @@ public class Broadcast implements Serializable {
String
broadcastName
;
String
broadcastName
;
@Comment
(
"坐标点信息"
)
@Comment
(
"坐标点信息"
)
@Column
(
columnDefinition
=
"geometry(Point,4326)"
)
Point
point
;
Point
point
;
@Comment
(
"播报设备地址"
)
@Comment
(
"播报设备地址"
)
...
...
app/src/main/java/com/yiring/app/domain/district/District.java
浏览文件 @
c216be5e
...
@@ -59,7 +59,7 @@ public class District implements Serializable {
...
@@ -59,7 +59,7 @@ public class District implements Serializable {
@Comment
(
"区域信息"
)
@Comment
(
"区域信息"
)
@Type
(
type
=
"jts_geometry"
)
@Type
(
type
=
"jts_geometry"
)
@Column
(
columnDefinition
=
"geometry"
)
@Column
(
columnDefinition
=
"geometry
(Geometry,4326)
"
)
private
Geometry
geometry
;
private
Geometry
geometry
;
@Comment
(
"创建时间"
)
@Comment
(
"创建时间"
)
...
...
app/src/main/java/com/yiring/app/domain/district/DistrictRepository.java
浏览文件 @
c216be5e
...
@@ -3,6 +3,7 @@ package com.yiring.app.domain.district;
...
@@ -3,6 +3,7 @@ package com.yiring.app.domain.district;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.List
;
import
java.util.List
;
import
org.locationtech.jts.geom.Geometry
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.data.jpa.repository.Query
;
...
@@ -36,4 +37,12 @@ public interface DistrictRepository extends JpaRepository<District, Serializable
...
@@ -36,4 +37,12 @@ public interface DistrictRepository extends JpaRepository<District, Serializable
*/
*/
@Query
(
"SELECT d FROM District d WHERE d.name like %?1%"
)
@Query
(
"SELECT d FROM District d WHERE d.name like %?1%"
)
List
<
District
>
findLikeName
(
String
name
);
List
<
District
>
findLikeName
(
String
name
);
/**
* 查询空间信息在区域内的区域信息
* @param geometry 空间信息
* @return 区域信息
*/
@Query
(
value
=
"select d.* from bs_district d where st_contains(d.geometry, :geometry)"
,
nativeQuery
=
true
)
List
<
District
>
findByGeometryContains
(
Geometry
geometry
);
}
}
app/src/main/java/com/yiring/app/domain/location/LocationBeacon.java
浏览文件 @
c216be5e
...
@@ -80,6 +80,7 @@ public class LocationBeacon extends BasicEntity implements Serializable {
...
@@ -80,6 +80,7 @@ public class LocationBeacon extends BasicEntity implements Serializable {
Double
distance
;
Double
distance
;
@Comment
(
"坐标点信息"
)
@Comment
(
"坐标点信息"
)
@Column
(
columnDefinition
=
"geometry(Point,4326)"
)
Point
point
;
Point
point
;
@FieldMapping
@FieldMapping
...
...
app/src/main/java/com/yiring/app/domain/location/LocationFence.java
浏览文件 @
c216be5e
...
@@ -51,7 +51,7 @@ public class LocationFence extends BasicEntity implements Serializable {
...
@@ -51,7 +51,7 @@ public class LocationFence extends BasicEntity implements Serializable {
private
String
mapName
;
private
String
mapName
;
@Comment
(
"摄像头"
)
@Comment
(
"摄像头"
)
@ManyToOne
@ManyToOne
(
fetch
=
FetchType
.
LAZY
)
@JoinColumn
(
name
=
"video_id"
)
@JoinColumn
(
name
=
"video_id"
)
private
Video
video
;
private
Video
video
;
...
@@ -60,7 +60,7 @@ public class LocationFence extends BasicEntity implements Serializable {
...
@@ -60,7 +60,7 @@ public class LocationFence extends BasicEntity implements Serializable {
@Comment
(
"空间信息"
)
@Comment
(
"空间信息"
)
@Type
(
type
=
"jts_geometry"
)
@Type
(
type
=
"jts_geometry"
)
@Column
(
columnDefinition
=
"geometry"
)
@Column
(
columnDefinition
=
"geometry
(Geometry,4326)
"
)
private
Geometry
geometry
;
private
Geometry
geometry
;
@Comment
(
"滞留时间(秒)"
)
@Comment
(
"滞留时间(秒)"
)
...
@@ -87,6 +87,12 @@ public class LocationFence extends BasicEntity implements Serializable {
...
@@ -87,6 +87,12 @@ public class LocationFence extends BasicEntity implements Serializable {
@OneToMany
(
mappedBy
=
"fence"
)
@OneToMany
(
mappedBy
=
"fence"
)
@ToString
.
Exclude
@ToString
.
Exclude
private
Set
<
LocationFenceRule
>
rules
=
new
HashSet
<>(
0
);
private
Set
<
LocationFenceRule
>
rules
=
new
HashSet
<>(
0
);
@ToString
.
Exclude
@Comment
(
"围栏中的标签集合"
)
@Builder
.
Default
@ManyToMany
(
fetch
=
FetchType
.
LAZY
)
Set
<
LocationTag
>
tags
=
new
HashSet
<>(
0
);
/*@SuppressWarnings({ "unused" })
/*@SuppressWarnings({ "unused" })
public enum Mode {
public enum Mode {
NORMAL("常规区域"),
NORMAL("常规区域"),
...
...
app/src/main/java/com/yiring/app/domain/location/LocationFenceAlarm.java
0 → 100644
浏览文件 @
c216be5e
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
domain
.
location
;
import
com.vladmihalcea.hibernate.type.json.JsonBinaryType
;
import
com.yiring.app.domain.alarm.AlarmType
;
import
com.yiring.auth.domain.user.User
;
import
com.yiring.common.domain.BasicEntity
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
javax.persistence.*
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
org.hibernate.annotations.Comment
;
import
org.hibernate.annotations.TypeDef
;
import
org.locationtech.jts.geom.Point
;
/**
* 围栏报警记录
*
* @author Jim
* @version 0.1
* 2022/5/12 21:33
*/
@Getter
@Setter
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
@Entity
@TypeDef
(
name
=
"jsonb"
,
typeClass
=
JsonBinaryType
.
class
)
@Table
(
name
=
"BS_LOCATION_FENCE_ALARM"
)
@Comment
(
"围栏报警记录"
)
public
class
LocationFenceAlarm
extends
BasicEntity
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
2984248537199016912L
;
@Comment
(
"围栏"
)
@ManyToOne
(
fetch
=
FetchType
.
LAZY
)
LocationFence
fence
;
@Comment
(
"触警位置"
)
@Column
(
columnDefinition
=
"geometry(Point,4326)"
)
Point
point
;
@Comment
(
"地图编号"
)
Long
areaId
;
@Comment
(
"触警人员"
)
@ManyToOne
(
fetch
=
FetchType
.
LAZY
)
User
user
;
@Comment
(
"触警标签"
)
@ManyToOne
(
fetch
=
FetchType
.
LAZY
)
LocationTag
tag
;
@Comment
(
"报警开始时间"
)
LocalDateTime
startTime
;
@Comment
(
"报警结束时间"
)
LocalDateTime
endTime
;
@Comment
(
"报警类型"
)
@ManyToOne
(
fetch
=
FetchType
.
LAZY
)
AlarmType
type
;
@Comment
(
"状态"
)
@Enumerated
(
EnumType
.
STRING
)
Status
status
;
// 推送记录集合(含接收状态)
// TODO
@SuppressWarnings
({
"unused"
})
public
enum
Status
{
ING
(
"进行中"
),
STOP
(
"停止"
);
final
String
text
;
Status
(
String
text
)
{
this
.
text
=
text
;
}
public
String
text
()
{
return
this
.
text
;
}
}
}
app/src/main/java/com/yiring/app/domain/location/LocationFenceAlarmRepository.java
0 → 100644
浏览文件 @
c216be5e
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
domain
.
location
;
import
java.io.Serializable
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.stereotype.Repository
;
/**
* @author Jim
* @version 0.1
* 2022/5/12 21:34
*/
@Repository
public
interface
LocationFenceAlarmRepository
extends
JpaRepository
<
LocationFenceAlarm
,
Serializable
>,
JpaSpecificationExecutor
<
LocationFenceAlarm
>
{}
app/src/main/java/com/yiring/app/domain/location/LocationFenceRepository.java
浏览文件 @
c216be5e
...
@@ -3,6 +3,7 @@ package com.yiring.app.domain.location;
...
@@ -3,6 +3,7 @@ package com.yiring.app.domain.location;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.List
;
import
java.util.List
;
import
org.locationtech.jts.geom.Geometry
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.data.jpa.repository.Query
;
...
@@ -37,4 +38,12 @@ public interface LocationFenceRepository
...
@@ -37,4 +38,12 @@ public interface LocationFenceRepository
*/
*/
@Query
(
"SELECT f FROM LocationFence f WHERE name like %?1% AND deleted = false"
)
@Query
(
"SELECT f FROM LocationFence f WHERE name like %?1% AND deleted = false"
)
List
<
LocationFence
>
findLikeName
(
String
name
);
List
<
LocationFence
>
findLikeName
(
String
name
);
/**
* 查询空间信息在围栏内的围栏信息
* @param geometry 空间信息
* @return 围栏信息
*/
@Query
(
value
=
"select f.* from bs_location_fence f where st_contains(f.geometry, :geometry)"
,
nativeQuery
=
true
)
List
<
LocationFence
>
findByGeometryContains
(
Geometry
geometry
);
}
}
app/src/main/java/com/yiring/app/domain/location/LocationFenceRuleRepository.java
浏览文件 @
c216be5e
...
@@ -9,7 +9,7 @@ import org.springframework.stereotype.Repository;
...
@@ -9,7 +9,7 @@ import org.springframework.stereotype.Repository;
/**
/**
* @author tml
* @author tml
* @version 1.0
* @version 1.0
*
@date
2022/4/29 11:40
* 2022/4/29 11:40
*/
*/
@Repository
@Repository
public
interface
LocationFenceRuleRepository
public
interface
LocationFenceRuleRepository
...
...
app/src/main/java/com/yiring/app/domain/location/LocationLog.java
浏览文件 @
c216be5e
...
@@ -71,6 +71,7 @@ public class LocationLog implements Serializable {
...
@@ -71,6 +71,7 @@ public class LocationLog implements Serializable {
User
.
Status
status
;
User
.
Status
status
;
@Comment
(
"坐标点信息"
)
@Comment
(
"坐标点信息"
)
@Column
(
columnDefinition
=
"geometry(Point,4326)"
)
Point
point
;
Point
point
;
@Comment
(
"信标集合"
)
@Comment
(
"信标集合"
)
...
@@ -83,6 +84,11 @@ public class LocationLog implements Serializable {
...
@@ -83,6 +84,11 @@ public class LocationLog implements Serializable {
@Column
(
columnDefinition
=
"jsonb"
)
@Column
(
columnDefinition
=
"jsonb"
)
JSONArray
fences
;
JSONArray
fences
;
@Comment
(
"区域集合"
)
@Type
(
type
=
"jsonb"
)
@Column
(
columnDefinition
=
"jsonb"
)
JSONArray
districts
;
@Comment
(
"静止/运动"
)
@Comment
(
"静止/运动"
)
Boolean
silent
;
Boolean
silent
;
...
...
app/src/main/java/com/yiring/app/domain/location/LocationTag.java
浏览文件 @
c216be5e
...
@@ -103,6 +103,7 @@ public class LocationTag extends BasicEntity implements Serializable {
...
@@ -103,6 +103,7 @@ public class LocationTag extends BasicEntity implements Serializable {
Integer
category
;
Integer
category
;
@Comment
(
"最后定位坐标"
)
@Comment
(
"最后定位坐标"
)
@Column
(
columnDefinition
=
"geometry(Point,4326)"
)
Point
point
;
Point
point
;
@SuppressWarnings
({
"unused"
})
@SuppressWarnings
({
"unused"
})
...
...
app/src/main/java/com/yiring/app/domain/location/LocationTurnover.java
0 → 100644
浏览文件 @
c216be5e
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
domain
.
location
;
import
com.vladmihalcea.hibernate.type.json.JsonBinaryType
;
import
com.yiring.common.domain.BasicEntity
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
javax.persistence.*
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
org.hibernate.annotations.Comment
;
import
org.hibernate.annotations.TypeDef
;
/**
* 定位进出记录
*
* @author Jim
* @version 0.1
* 2022/5/12 17:54
*/
@Getter
@Setter
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
@Entity
@TypeDef
(
name
=
"jsonb"
,
typeClass
=
JsonBinaryType
.
class
)
@Table
(
name
=
"BS_LOCATION_TURNOVER"
,
indexes
=
{
@Index
(
columnList
=
"type"
),
@Index
(
columnList
=
"sourceId"
)
})
@Comment
(
"定位进出记录"
)
public
class
LocationTurnover
extends
BasicEntity
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
887764448464587364L
;
@Comment
(
"进出区域/围栏表主键"
)
Long
sourceId
;
@Comment
(
"类型"
)
@Enumerated
(
EnumType
.
STRING
)
Type
type
;
@Comment
(
"定位标签"
)
@ManyToOne
(
fetch
=
FetchType
.
LAZY
)
LocationTag
tag
;
@Comment
(
"定位时间"
)
LocalDateTime
time
;
@Comment
(
"进入"
)
Boolean
enter
;
@Comment
(
"是否为最新状态"
)
Boolean
isLatest
;
@SuppressWarnings
({
"unused"
})
public
enum
Type
{
FENCE
(
"围栏"
),
DISTRICT
(
"区域"
);
final
String
text
;
Type
(
String
text
)
{
this
.
text
=
text
;
}
public
String
text
()
{
return
this
.
text
;
}
}
}
app/src/main/java/com/yiring/app/domain/location/LocationTurnoverRepository.java
0 → 100644
浏览文件 @
c216be5e
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
domain
.
location
;
import
java.io.Serializable
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.stereotype.Repository
;
/**
* @author Jim
* @version 0.1
* 2022/5/12 18:13
*/
@Repository
public
interface
LocationTurnoverRepository
extends
JpaRepository
<
LocationTurnover
,
Serializable
>,
JpaSpecificationExecutor
<
LocationTurnover
>
{}
app/src/main/java/com/yiring/app/domain/rehearsal/AccidentSpot.java
浏览文件 @
c216be5e
...
@@ -48,7 +48,7 @@ public class AccidentSpot extends BasicEntity implements Serializable {
...
@@ -48,7 +48,7 @@ public class AccidentSpot extends BasicEntity implements Serializable {
@Comment
(
"空间信息"
)
@Comment
(
"空间信息"
)
@Type
(
type
=
"jts_geometry"
)
@Type
(
type
=
"jts_geometry"
)
@Column
(
columnDefinition
=
"geometry"
)
@Column
(
columnDefinition
=
"geometry
(Geometry,4326)
"
)
private
Geometry
geometry
;
private
Geometry
geometry
;
@Comment
(
"摄像头"
)
@Comment
(
"摄像头"
)
...
...
app/src/main/java/com/yiring/app/domain/rehearsal/EvacuationZone.java
浏览文件 @
c216be5e
...
@@ -48,7 +48,7 @@ public class EvacuationZone extends BasicEntity implements Serializable {
...
@@ -48,7 +48,7 @@ public class EvacuationZone extends BasicEntity implements Serializable {
@Comment
(
"空间信息"
)
@Comment
(
"空间信息"
)
@Type
(
type
=
"jts_geometry"
)
@Type
(
type
=
"jts_geometry"
)
@Column
(
columnDefinition
=
"geometry"
)
@Column
(
columnDefinition
=
"geometry
(Geometry,4326)
"
)
private
Geometry
geometry
;
private
Geometry
geometry
;
@Comment
(
"摄像头"
)
@Comment
(
"摄像头"
)
...
...
app/src/main/java/com/yiring/app/domain/video/Video.java
浏览文件 @
c216be5e
...
@@ -44,6 +44,7 @@ public class Video implements Serializable {
...
@@ -44,6 +44,7 @@ public class Video implements Serializable {
Long
id
;
Long
id
;
@Comment
(
"坐标点信息"
)
@Comment
(
"坐标点信息"
)
@Column
(
columnDefinition
=
"geometry(Point,4326)"
)
Point
point
;
Point
point
;
@Comment
(
"标识"
)
@Comment
(
"标识"
)
...
...
app/src/main/java/com/yiring/app/job/Mock
Zy
MessageJob.java
→
app/src/main/java/com/yiring/app/job/Mock
Position
MessageJob.java
浏览文件 @
c216be5e
/* (C) 2022 YiRing, Inc. */
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
job
;
package
com
.
yiring
.
app
.
job
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xxl.job.core.context.XxlJobHelper
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
com.yiring.app.domain.location.LocationLog
;
import
com.yiring.app.domain.location.LocationLog
;
import
com.yiring.app.domain.location.LocationLogRepository
;
import
com.yiring.app.domain.location.LocationLogRepository
;
...
@@ -29,7 +31,7 @@ import org.springframework.stereotype.Component;
...
@@ -29,7 +31,7 @@ import org.springframework.stereotype.Component;
@SuppressWarnings
(
"unused"
)
@SuppressWarnings
(
"unused"
)
@Slf4j
@Slf4j
@Component
@Component
public
class
Mock
Zy
MessageJob
{
public
class
Mock
Position
MessageJob
{
@Resource
@Resource
RabbitTemplate
rabbitTemplate
;
RabbitTemplate
rabbitTemplate
;
...
@@ -40,19 +42,33 @@ public class MockZyMessageJob {
...
@@ -40,19 +42,33 @@ public class MockZyMessageJob {
@Resource
@Resource
ZyConfigProperties
.
ZyConfigRabbitmq
rabbitmq
;
ZyConfigProperties
.
ZyConfigRabbitmq
rabbitmq
;
@XxlJob
(
"MockZyMessageHandler"
)
@XxlJob
(
"MockPositionHandler"
)
public
void
mockMessageHandler
()
{
public
void
MockPositionHandler
()
{
log
.
info
(
"MockZyMessageHandler: {}"
,
LocalDateTime
.
now
().
format
(
DateFormatter
.
DATE_TIME
));
JSONObject
extra
=
toJSON
(
XxlJobHelper
.
getJobParam
());
log
.
info
(
"[Mock] Position: {}, {}"
,
mockPositionMessage
(
extra
),
extra
);
}
@XxlJob
(
"MockLowPowerHandler"
)
public
void
MockLowPowerHandler
()
{
JSONObject
extra
=
toJSON
(
XxlJobHelper
.
getJobParam
());
log
.
info
(
"[Mock] LowPower: {}, {}"
,
mockLowPowerMessage
(
extra
),
extra
);
}
log
.
info
(
"[Mock] Position: {}"
,
mockPositionMessage
());
@XxlJob
(
"MockDeviceStatusHandler"
)
log
.
info
(
"[Mock] LowPower: {}"
,
mockLowPowerMessage
());
public
void
MockDeviceStatusHandler
()
{
log
.
info
(
"[Mock] DeviceStatus: {}"
,
mockDeviceStatusMessage
());
JSONObject
extra
=
toJSON
(
XxlJobHelper
.
getJobParam
());
log
.
info
(
"[Mock] KeyWarning: {}"
,
mockKeyWarningMessage
());
log
.
info
(
"[Mock] DeviceStatus: {}, {}"
,
mockDeviceStatusMessage
(
extra
),
extra
);
}
@XxlJob
(
"MockKeyWarningHandler"
)
public
void
MockKeyWarningHandler
()
{
JSONObject
extra
=
toJSON
(
XxlJobHelper
.
getJobParam
());
log
.
info
(
"[Mock] KeyWarning: {}, {}"
,
mockKeyWarningMessage
(
extra
),
extra
);
}
}
@XxlJob
(
"QueryMessageHandler"
)
@XxlJob
(
"QueryMessageHandler"
)
public
void
queryMessageHandler
()
{
public
void
queryMessageHandler
()
{
log
.
info
(
"Query
Zy
MessageHandler: {}"
,
LocalDateTime
.
now
().
format
(
DateFormatter
.
DATE_TIME
));
log
.
info
(
"QueryMessageHandler: {}"
,
LocalDateTime
.
now
().
format
(
DateFormatter
.
DATE_TIME
));
try
{
try
{
Specification
<
LocationLog
>
spec
=
(
root
,
query
,
cb
)
->
{
Specification
<
LocationLog
>
spec
=
(
root
,
query
,
cb
)
->
{
...
@@ -62,17 +78,31 @@ public class MockZyMessageJob {
...
@@ -62,17 +78,31 @@ public class MockZyMessageJob {
};
};
List
<
LocationLog
>
logs
=
locationLogRepository
.
findAll
(
spec
);
List
<
LocationLog
>
logs
=
locationLogRepository
.
findAll
(
spec
);
log
.
info
(
"
QueryZyMessageHandler
: {}"
,
logs
.
size
());
log
.
info
(
"
log size
: {}"
,
logs
.
size
());
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
log
.
error
(
e
.
getMessage
(),
e
);
}
}
}
}
public
JSONObject
send
(
JSONObject
body
)
{
public
JSONObject
send
(
JSONObject
body
)
{
rabbitTemplate
.
convertAndSend
(
rabbitmq
.
getQueueName
(),
body
.
toJSONString
());
if
(
rabbitmq
.
isMock
())
{
rabbitTemplate
.
convertAndSend
(
rabbitmq
.
getQueueName
(),
body
.
toJSONString
());
}
return
body
;
return
body
;
}
}
public
JSONObject
toJSON
(
String
params
)
{
JSONObject
extra
=
new
JSONObject
();
try
{
extra
=
JSON
.
parseObject
(
params
);
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
}
return
extra
==
null
?
new
JSONObject
()
:
extra
;
}
private
String
mockTag
()
{
private
String
mockTag
()
{
return
"BTT33333331"
;
return
"BTT33333331"
;
}
}
...
@@ -81,7 +111,7 @@ public class MockZyMessageJob {
...
@@ -81,7 +111,7 @@ public class MockZyMessageJob {
return
10019L
;
return
10019L
;
}
}
private
JSONObject
mockPositionMessage
()
{
private
JSONObject
mockPositionMessage
(
JSONObject
extra
)
{
// 随机生成一个坐标点
// 随机生成一个坐标点
Point
point
=
GeoUtils
.
randomPoint
(
GeoUtils
.
defaultBounds
(),
0
);
Point
point
=
GeoUtils
.
randomPoint
(
GeoUtils
.
defaultBounds
(),
0
);
...
@@ -98,6 +128,7 @@ public class MockZyMessageJob {
...
@@ -98,6 +128,7 @@ public class MockZyMessageJob {
params
.
put
(
"volt"
,
3650
);
params
.
put
(
"volt"
,
3650
);
params
.
put
(
"voltUnit"
,
"mV"
);
params
.
put
(
"voltUnit"
,
"mV"
);
params
.
put
(
"floor"
,
1
);
params
.
put
(
"floor"
,
1
);
params
.
putAll
(
extra
);
JSONObject
body
=
new
JSONObject
();
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"method"
,
"position"
);
body
.
put
(
"method"
,
"position"
);
...
@@ -105,11 +136,12 @@ public class MockZyMessageJob {
...
@@ -105,11 +136,12 @@ public class MockZyMessageJob {
return
send
(
body
);
return
send
(
body
);
}
}
private
JSONObject
mockLowPowerMessage
()
{
private
JSONObject
mockLowPowerMessage
(
JSONObject
extra
)
{
JSONObject
params
=
new
JSONObject
();
JSONObject
params
=
new
JSONObject
();
params
.
put
(
"tagId"
,
mockTag
());
params
.
put
(
"tagId"
,
mockTag
());
params
.
put
(
"volt"
,
3650
);
params
.
put
(
"volt"
,
3650
);
params
.
put
(
"voltUnit"
,
"mV"
);
params
.
put
(
"voltUnit"
,
"mV"
);
params
.
putAll
(
extra
);
JSONObject
body
=
new
JSONObject
();
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"method"
,
"lowPower"
);
body
.
put
(
"method"
,
"lowPower"
);
...
@@ -117,7 +149,7 @@ public class MockZyMessageJob {
...
@@ -117,7 +149,7 @@ public class MockZyMessageJob {
return
send
(
body
);
return
send
(
body
);
}
}
private
JSONObject
mockDeviceStatusMessage
()
{
private
JSONObject
mockDeviceStatusMessage
(
JSONObject
extra
)
{
JSONObject
params
=
new
JSONObject
();
JSONObject
params
=
new
JSONObject
();
params
.
put
(
"deviceId"
,
mockTag
());
params
.
put
(
"deviceId"
,
mockTag
());
params
.
put
(
"areaId"
,
mockAreaId
());
params
.
put
(
"areaId"
,
mockAreaId
());
...
@@ -125,6 +157,7 @@ public class MockZyMessageJob {
...
@@ -125,6 +157,7 @@ public class MockZyMessageJob {
params
.
put
(
"volt"
,
3650
);
params
.
put
(
"volt"
,
3650
);
params
.
put
(
"field_21"
,
"mV"
);
params
.
put
(
"field_21"
,
"mV"
);
params
.
put
(
"updateTime"
,
System
.
currentTimeMillis
());
params
.
put
(
"updateTime"
,
System
.
currentTimeMillis
());
params
.
putAll
(
extra
);
JSONObject
body
=
new
JSONObject
();
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"method"
,
"deviceStatus"
);
body
.
put
(
"method"
,
"deviceStatus"
);
...
@@ -132,7 +165,7 @@ public class MockZyMessageJob {
...
@@ -132,7 +165,7 @@ public class MockZyMessageJob {
return
send
(
body
);
return
send
(
body
);
}
}
private
JSONObject
mockKeyWarningMessage
()
{
private
JSONObject
mockKeyWarningMessage
(
JSONObject
extra
)
{
JSONObject
params
=
new
JSONObject
();
JSONObject
params
=
new
JSONObject
();
params
.
put
(
"tagId"
,
mockTag
());
params
.
put
(
"tagId"
,
mockTag
());
params
.
put
(
"entityId"
,
"1522770547178475520"
);
params
.
put
(
"entityId"
,
"1522770547178475520"
);
...
@@ -142,6 +175,7 @@ public class MockZyMessageJob {
...
@@ -142,6 +175,7 @@ public class MockZyMessageJob {
params
.
put
(
"y"
,
100
);
params
.
put
(
"y"
,
100
);
params
.
put
(
"z"
,
0
);
params
.
put
(
"z"
,
0
);
params
.
put
(
"floor"
,
1
);
params
.
put
(
"floor"
,
1
);
params
.
putAll
(
extra
);
JSONObject
body
=
new
JSONObject
();
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"method"
,
"keyWarning"
);
body
.
put
(
"method"
,
"keyWarning"
);
...
...
app/src/main/java/com/yiring/app/rabbit/receiver/PositionMessageHandler.java
浏览文件 @
c216be5e
...
@@ -34,13 +34,13 @@ public class PositionMessageHandler implements ChannelAwareMessageListener {
...
@@ -34,13 +34,13 @@ public class PositionMessageHandler implements ChannelAwareMessageListener {
@Resource
@Resource
PositionMessageService
positionMessageService
;
PositionMessageService
positionMessageService
;
@Times
@Times
(
"Position System Message Handler"
)
@Override
@Override
public
void
onMessage
(
Message
message
,
Channel
channel
)
throws
IOException
{
public
void
onMessage
(
Message
message
,
Channel
channel
)
throws
IOException
{
// 消费消息
positionMessageService
.
consume
(
new
String
(
message
.
getBody
(),
StandardCharsets
.
UTF_8
));
// 手动确认消息已收到
// 手动确认消息已收到
assert
channel
!=
null
;
assert
channel
!=
null
;
channel
.
basicAck
(
message
.
getMessageProperties
().
getDeliveryTag
(),
false
);
channel
.
basicAck
(
message
.
getMessageProperties
().
getDeliveryTag
(),
false
);
// 消费消息
positionMessageService
.
consume
(
new
String
(
message
.
getBody
(),
StandardCharsets
.
UTF_8
));
}
}
}
}
app/src/main/java/com/yiring/app/service/message/impl/PositionMessageServiceImpl.java
浏览文件 @
c216be5e
差异被折叠。
点击展开。
app/src/main/java/com/yiring/app/util/GeoUtils.java
浏览文件 @
c216be5e
...
@@ -22,6 +22,8 @@ public class GeoUtils {
...
@@ -22,6 +22,8 @@ public class GeoUtils {
public
final
GeometryFactory
factory
=
new
GeometryFactory
();
public
final
GeometryFactory
factory
=
new
GeometryFactory
();
public
final
int
DEFAULT_SRID
=
4326
;
/**
/**
* 创建点
* 创建点
*
*
...
@@ -30,7 +32,7 @@ public class GeoUtils {
...
@@ -30,7 +32,7 @@ public class GeoUtils {
* @return 点
* @return 点
*/
*/
public
Point
createPoint
(
double
lon
,
double
lat
)
{
public
Point
createPoint
(
double
lon
,
double
lat
)
{
return
factory
.
createPoint
(
new
Coordinate
(
lon
,
lat
)
);
return
createPoint
(
lon
,
lat
,
0
);
}
}
/**
/**
...
@@ -41,7 +43,9 @@ public class GeoUtils {
...
@@ -41,7 +43,9 @@ public class GeoUtils {
* @return 点
* @return 点
*/
*/
public
Point
createPoint
(
double
lon
,
double
lat
,
double
alt
)
{
public
Point
createPoint
(
double
lon
,
double
lat
,
double
alt
)
{
return
factory
.
createPoint
(
new
Coordinate
(
lon
,
lat
,
alt
));
Point
point
=
factory
.
createPoint
(
new
Coordinate
(
lon
,
lat
,
alt
));
point
.
setSRID
(
DEFAULT_SRID
);
return
point
;
}
}
/**
/**
...
@@ -70,13 +74,12 @@ public class GeoUtils {
...
@@ -70,13 +74,12 @@ public class GeoUtils {
y
y
);
);
// 构建
经纬度坐标信息
// 构建
一个坐标点
Coordinate
coordinate
=
new
Coordinate
(
return
createPoint
(
result
.
getDoubleValue
(
"lon"
),
result
.
getDoubleValue
(
"lon"
),
result
.
getDoubleValue
(
"lat"
),
result
.
getDoubleValue
(
"lat"
),
r
oo
t
.
getDoubleValue
(
"altitude"
)
+
z
r
esul
t
.
getDoubleValue
(
"altitude"
)
+
z
);
);
return
factory
.
createPoint
(
coordinate
);
}
}
/**
/**
...
@@ -110,6 +113,6 @@ public class GeoUtils {
...
@@ -110,6 +113,6 @@ public class GeoUtils {
public
Point
randomPoint
(
double
minX
,
double
minY
,
double
maxX
,
double
maxY
,
double
z
)
{
public
Point
randomPoint
(
double
minX
,
double
minY
,
double
maxX
,
double
maxY
,
double
z
)
{
double
x
=
minX
+
(
maxX
-
minX
)
*
Math
.
random
();
double
x
=
minX
+
(
maxX
-
minX
)
*
Math
.
random
();
double
y
=
minY
+
(
maxY
-
minY
)
*
Math
.
random
();
double
y
=
minY
+
(
maxY
-
minY
)
*
Math
.
random
();
return
factory
.
createPoint
(
new
Coordinate
(
x
,
y
,
z
)
);
return
createPoint
(
x
,
y
,
z
);
}
}
}
}
app/src/main/resources/application-dev.yml
浏览文件 @
c216be5e
...
@@ -83,22 +83,22 @@ xxl:
...
@@ -83,22 +83,22 @@ xxl:
logging
:
logging
:
level
:
level
:
# sql bind parameter
# sql bind parameter
#
org.hibernate.type.descriptor.sql.BasicBinder: trace
org.hibernate.type.descriptor.sql.BasicBinder
:
trace
org.hibernate.type.descriptor.sql.BasicBinder
:
error
#
org.hibernate.type.descriptor.sql.BasicBinder: error
# 真源定位系统相关配置
# 真源定位系统相关配置
zy-config
:
zy-config
:
host
:
project.yz-online.com
host
:
project.yz-online.com
# RabbitMQ 订阅配置
# RabbitMQ 订阅配置
rabbitmq
:
rabbitmq
:
mock
:
fals
e
mock
:
tru
e
enabled
:
true
enabled
:
true
host
:
${zy-config.host}
host
:
${zy-config.host}
port
:
672
port
:
672
username
:
admin
username
:
admin
password
:
admin
password
:
admin
virtual-host
:
/
virtual-host
:
/
queue-name
:
tenant_msg_${zy-config.open.client-secret}_${zy-config.open.client-id}
queue-name
:
tenant_msg_${zy-config.open.client-secret}_${zy-config.open.client-id}
_mock
# 开放接口信息配置
# 开放接口信息配置
open
:
open
:
api
:
http://${zy-config.host}:789/positionApi
api
:
http://${zy-config.host}:789/positionApi
...
...
basic-common/util/src/main/java/com/yiring/common/aspect/XxlJobAspect.java
0 → 100644
浏览文件 @
c216be5e
/* (C) 2021 YiRing, Inc. */
package
com
.
yiring
.
common
.
aspect
;
import
lombok.extern.slf4j.Slf4j
;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.aspectj.lang.annotation.Around
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.annotation.Pointcut
;
import
org.springframework.stereotype.Component
;
/**
* XxlJob 注解切面
*
* @author ifzm
* @version 0.1
*/
@Slf4j
@Aspect
@Component
public
class
XxlJobAspect
{
@Pointcut
(
"@annotation(com.xxl.job.core.handler.annotation.XxlJob)"
)
public
void
log
()
{}
@Around
(
"log()"
)
public
Object
around
(
ProceedingJoinPoint
point
)
throws
Throwable
{
try
{
return
point
.
proceed
();
}
catch
(
Exception
e
)
{
log
.
error
(
"XxlJob Execute Error: "
+
e
.
getMessage
(),
e
);
throw
e
;
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论