Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
cloud-platform
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
youjj
cloud-platform
Commits
43eb29ac
Commit
43eb29ac
authored
Apr 25, 2019
by
dengjh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
车辆管理:增加汽车预警信息模块
parent
8277a8de
Changes
16
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
785 additions
and
0 deletions
+785
-0
VehicleWarningMsgBiz.java
...nxincaravan/caravan/vehicle/biz/VehicleWarningMsgBiz.java
+217
-0
RedisKey.java
.../com/xinxincaravan/caravan/vehicle/constant/RedisKey.java
+13
-0
VehicleMsgStatus.java
...xincaravan/caravan/vehicle/constant/VehicleMsgStatus.java
+53
-0
VehicleMsgType.java
...inxincaravan/caravan/vehicle/constant/VehicleMsgType.java
+54
-0
VehicleWarningMsg.java
...nxincaravan/caravan/vehicle/entity/VehicleWarningMsg.java
+59
-0
VehicleWarningRule.java
...xincaravan/caravan/vehicle/entity/VehicleWarningRule.java
+47
-0
VehicleWarningMsgMapper.java
...ravan/caravan/vehicle/mapper/VehicleWarningMsgMapper.java
+17
-0
VehicleWarningRuleMapper.java
...avan/caravan/vehicle/mapper/VehicleWarningRuleMapper.java
+9
-0
VehicleWarningMsgController.java
...van/caravan/vehicle/rest/VehicleWarningMsgController.java
+55
-0
JSUtil.java
...n/java/com/xinxincaravan/caravan/vehicle/util/JSUtil.java
+70
-0
AddVehicleWarningMsgVo.java
...xincaravan/caravan/vehicle/vo/AddVehicleWarningMsgVo.java
+31
-0
QueryVehicleWarningMsgVo.java
...ncaravan/caravan/vehicle/vo/QueryVehicleWarningMsgVo.java
+32
-0
VehicleWarningMsgQueryVo.java
...ncaravan/caravan/vehicle/vo/VehicleWarningMsgQueryVo.java
+68
-0
VehicleWarningMsgMapper.xml
...cle/src/main/resources/mapper/VehicleWarningMsgMapper.xml
+28
-0
VehicleWarningRuleMapper.xml
...le/src/main/resources/mapper/VehicleWarningRuleMapper.xml
+10
-0
VehicleWarningMsgBizTest.java
...caravan/caravan/vehicle/biz/VehicleWarningMsgBizTest.java
+22
-0
No files found.
vehicle/src/main/java/com/xinxincaravan/caravan/vehicle/biz/VehicleWarningMsgBiz.java
0 → 100644
View file @
43eb29ac
This diff is collapsed.
Click to expand it.
vehicle/src/main/java/com/xinxincaravan/caravan/vehicle/constant/RedisKey.java
View file @
43eb29ac
...
@@ -51,4 +51,17 @@ public class RedisKey {
...
@@ -51,4 +51,17 @@ public class RedisKey {
* 服务器上传文件序号
* 服务器上传文件序号
*/
*/
public
static
final
String
UPLOAD_FILE_NO_PREFIX
=
"upload:file:no:"
;
public
static
final
String
UPLOAD_FILE_NO_PREFIX
=
"upload:file:no:"
;
/**
* 预警信息检查乐观锁
*/
public
static
final
String
LOCK_VEHICLE_WARNING_MSG
=
"lock:vehicle:warningMsg"
;
/**
* 车辆预警,前一天检查的里程数redisKey前缀
*/
public
static
final
String
MILEAGE_LAST_DAY_PREFIX
=
"mileage:last_day:"
;
}
}
vehicle/src/main/java/com/xinxincaravan/caravan/vehicle/constant/VehicleMsgStatus.java
0 → 100644
View file @
43eb29ac
package
com
.
xinxincaravan
.
caravan
.
vehicle
.
constant
;
import
com.google.common.collect.Maps
;
import
java.util.Map
;
public
enum
VehicleMsgStatus
{
NOT_PROCESSED
(
0
,
"未处理"
),
PROCESSED
(
1
,
"已处理"
),
;
/**
* 编码
*/
private
Integer
code
;
/**
* 类型描述
*/
private
String
desc
;
private
static
Map
<
Integer
,
String
>
codeAndDesc
=
Maps
.
newHashMap
();
static
{
for
(
VehicleMsgStatus
constantType
:
VehicleMsgStatus
.
values
()){
codeAndDesc
.
put
(
constantType
.
getCode
(),
constantType
.
getDesc
());
}
}
VehicleMsgStatus
(
Integer
code
,
String
desc
){
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
public
static
Boolean
exists
(
Integer
code
){
return
codeAndDesc
.
containsKey
(
code
);
}
}
vehicle/src/main/java/com/xinxincaravan/caravan/vehicle/constant/VehicleMsgType.java
0 → 100644
View file @
43eb29ac
package
com
.
xinxincaravan
.
caravan
.
vehicle
.
constant
;
import
com.google.common.collect.Maps
;
import
java.util.Map
;
public
enum
VehicleMsgType
{
MAINTENANCE
(
1
,
"汽车保养提醒"
),
REPAIR
(
2
,
"汽车维修提醒"
),
CUSTOM
(
3
,
"自定义"
),
;
/**
* 编码
*/
private
Integer
code
;
/**
* 类型描述
*/
private
String
desc
;
private
static
Map
<
Integer
,
String
>
codeAndDesc
=
Maps
.
newHashMap
();
static
{
for
(
VehicleMsgType
constantType
:
VehicleMsgType
.
values
()){
codeAndDesc
.
put
(
constantType
.
getCode
(),
constantType
.
getDesc
());
}
}
VehicleMsgType
(
Integer
code
,
String
desc
){
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
public
static
Boolean
exists
(
Integer
code
){
return
codeAndDesc
.
containsKey
(
code
);
}
}
vehicle/src/main/java/com/xinxincaravan/caravan/vehicle/entity/VehicleWarningMsg.java
0 → 100644
View file @
43eb29ac
package
com
.
xinxincaravan
.
caravan
.
vehicle
.
entity
;
import
lombok.Data
;
import
javax.persistence.Column
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.GenerationType
;
import
javax.persistence.Id
;
import
java.util.Date
;
/**
*车辆相关预警消息
*
*/
@Data
public
class
VehicleWarningMsg
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
public
Integer
id
;
/**
* 消息类型,详见VehicleMsgType
*/
public
Integer
type
;
/**
* 消息类型,详见VehicleMsgStatus
*/
public
Integer
status
;
/**
* 消息内容
*/
private
String
msg
;
/**
* 对应规则ID
*/
private
Integer
ruleId
;
/**
* 对应车辆ID
*/
private
String
vehicleId
;
/**
* 消息key,用于去重
*/
private
String
msgKey
;
/**
* 备注
*/
private
String
remark
;
private
Date
createTime
;
private
Date
updateTime
;
}
vehicle/src/main/java/com/xinxincaravan/caravan/vehicle/entity/VehicleWarningRule.java
0 → 100644
View file @
43eb29ac
package
com
.
xinxincaravan
.
caravan
.
vehicle
.
entity
;
import
lombok.Data
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.GenerationType
;
import
javax.persistence.Id
;
import
java.util.Date
;
/**
*车辆相关预警消息
*
*/
@Data
public
class
VehicleWarningRule
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Integer
id
;
/**
* 消息类型,详见VehicleMsgType
*/
private
Integer
msgType
;
/**
* js函数用于检查是否符合规则
*/
private
String
jsFunctionCheck
;
/**
* js表达式用于拼接消息内容
*/
private
String
jsExpressionMsg
;
/**
* js表达式用于生成消息唯一键
*/
private
String
jsFunctionMsgKey
;
/**
* 备注
*/
private
String
remark
;
private
Date
createTime
;
private
Date
updateTime
;
}
vehicle/src/main/java/com/xinxincaravan/caravan/vehicle/mapper/VehicleWarningMsgMapper.java
0 → 100644
View file @
43eb29ac
package
com
.
xinxincaravan
.
caravan
.
vehicle
.
mapper
;
import
com.xinxincaravan.caravan.vehicle.entity.VehicleWarningMsg
;
import
com.xinxincaravan.caravan.vehicle.vo.PageDataVo
;
import
com.xinxincaravan.caravan.vehicle.vo.QueryVehicleWarningMsgVo
;
import
tk.mybatis.mapper.common.Mapper
;
import
java.util.List
;
public
interface
VehicleWarningMsgMapper
extends
Mapper
<
VehicleWarningMsg
>
{
public
List
<
VehicleWarningMsg
>
getByPage
(
QueryVehicleWarningMsgVo
queryVehicleWarningMsgVo
);
public
List
<
VehicleWarningMsg
>
getMsgByVehicle
(
String
vehicleId
);
}
vehicle/src/main/java/com/xinxincaravan/caravan/vehicle/mapper/VehicleWarningRuleMapper.java
0 → 100644
View file @
43eb29ac
package
com
.
xinxincaravan
.
caravan
.
vehicle
.
mapper
;
import
com.xinxincaravan.caravan.vehicle.entity.VehicleWarningRule
;
import
tk.mybatis.mapper.common.Mapper
;
public
interface
VehicleWarningRuleMapper
extends
Mapper
<
VehicleWarningRule
>
{
}
vehicle/src/main/java/com/xinxincaravan/caravan/vehicle/rest/VehicleWarningMsgController.java
0 → 100644
View file @
43eb29ac
package
com
.
xinxincaravan
.
caravan
.
vehicle
.
rest
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONException
;
import
com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken
;
import
com.xinxincaravan.caravan.vehicle.biz.AccompanyingItemBiz
;
import
com.xinxincaravan.caravan.vehicle.biz.VehicleWarningMsgBiz
;
import
com.xinxincaravan.caravan.vehicle.common.BaseController
;
import
com.xinxincaravan.caravan.vehicle.common.CustomIllegalParamException
;
import
com.xinxincaravan.caravan.vehicle.common.RestResponse
;
import
com.xinxincaravan.caravan.vehicle.constant.ResCode.ResCode
;
import
com.xinxincaravan.caravan.vehicle.entity.AccompanyingItem
;
import
com.xinxincaravan.caravan.vehicle.entity.VehicleWarningMsg
;
import
com.xinxincaravan.caravan.vehicle.vo.*
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
@RestController
@RequestMapping
(
"/vehicleWarningMsg"
)
@IgnoreClientToken
@Slf4j
public
class
VehicleWarningMsgController
extends
BaseController
<
VehicleWarningMsgBiz
>
{
@RequestMapping
(
value
=
"{id}"
,
method
=
RequestMethod
.
GET
)
private
RestResponse
<
VehicleWarningMsg
>
get
(
@PathVariable
Integer
id
)
throws
Exception
{
return
RestResponse
.
codeAndData
(
RestResponse
.
SUC_CODE
,
baseBiz
.
selectById
(
id
));
}
@RequestMapping
(
value
=
"page"
,
method
=
RequestMethod
.
GET
)
private
RestResponse
<
PageDataVo
<
VehicleWarningMsg
>>
getByPage
(
@RequestParam
String
queryVehicleWarningMsgVoJson
)
throws
Exception
{
QueryVehicleWarningMsgVo
queryVehicleWarningMsgVo
=
null
;
try
{
queryVehicleWarningMsgVo
=
JSON
.
parseObject
(
queryVehicleWarningMsgVoJson
,
QueryVehicleWarningMsgVo
.
class
);
return
RestResponse
.
data
(
baseBiz
.
getByPage
(
queryVehicleWarningMsgVo
));
}
catch
(
JSONException
ex
)
{
return
RestResponse
.
code
(
ResCode
.
INVALID_REST_REQ_PARAM
.
getCode
());
}
catch
(
CustomIllegalParamException
ex
){
return
RestResponse
.
code
(
ResCode
.
INVALID_REST_REQ_PARAM
.
getCode
());
}
}
@RequestMapping
(
value
=
""
,
method
=
RequestMethod
.
POST
)
private
RestResponse
<
Integer
>
add
(
@RequestBody
AddVehicleWarningMsgVo
addVehicleWarningMsgVo
)
throws
Exception
{
return
baseBiz
.
add
(
addVehicleWarningMsgVo
);
}
@RequestMapping
(
value
=
"deal/{id}"
,
method
=
RequestMethod
.
PUT
)
private
RestResponse
deal
(
@PathVariable
Integer
id
)
throws
Exception
{
return
baseBiz
.
deal
(
id
);
}
}
vehicle/src/main/java/com/xinxincaravan/caravan/vehicle/util/JSUtil.java
0 → 100644
View file @
43eb29ac
package
com
.
xinxincaravan
.
caravan
.
vehicle
.
util
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
javax.script.Invocable
;
import
javax.script.ScriptEngine
;
import
javax.script.ScriptEngineManager
;
import
java.util.Map
;
public
class
JSUtil
{
public
static
final
ScriptEngineManager
manager
=
new
ScriptEngineManager
();
public
static
final
ThreadLocal
<
ScriptEngine
>
engine
=
new
ThreadLocal
<
ScriptEngine
>()
{
@Override
protected
ScriptEngine
initialValue
()
{
return
manager
.
getEngineByName
(
"javascript"
);
}
};
public
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
Object
.
class
);
/**
* 执行js函数(注意,js的脚本引擎不是线程安全的,不要使用全局变量)
* @param functionCode 函数代码,只包含块中内容
* @param params 参数params
* @return
*/
public
static
Object
evalJsFunction
(
String
functionName
,
String
functionCode
,
Map
<
String
,
Object
>
params
){
try
{
engine
.
get
().
eval
(
"function "
+
functionName
+
"(params){"
+
functionCode
+
"};"
);
if
(
engine
.
get
()
instanceof
Invocable
)
{
Invocable
in
=
(
Invocable
)
engine
.
get
();
return
in
.
invokeFunction
(
functionName
,
params
);
}
}
catch
(
Exception
e
){
logger
.
error
(
e
.
getMessage
());
}
return
null
;
}
/**
* 执行js表达式
* @param jsExpression js表达式
* @param params 参数,供表达式调用
* @return
*/
public
static
Object
eval
(
String
jsExpression
,
Map
<
String
,
Object
>
params
){
try
{
engine
.
get
().
eval
(
"function evalJSExpression(params){"
+
"return eval(\""
+
jsExpression
+
"\");"
+
"}"
);
if
(
engine
.
get
()
instanceof
Invocable
)
{
Invocable
in
=
(
Invocable
)
engine
.
get
();
return
in
.
invokeFunction
(
"evalJSExpression"
,
params
);
}
}
catch
(
Exception
e
){
logger
.
error
(
e
.
getMessage
());
}
return
null
;
}
}
vehicle/src/main/java/com/xinxincaravan/caravan/vehicle/vo/AddVehicleWarningMsgVo.java
0 → 100644
View file @
43eb29ac
package
com
.
xinxincaravan
.
caravan
.
vehicle
.
vo
;
import
lombok.Data
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.GenerationType
;
import
javax.persistence.Id
;
import
java.util.Date
;
/**
*车辆相关预警消息
*
*/
@Data
public
class
AddVehicleWarningMsgVo
{
/**
* 消息内容
*/
private
String
msg
;
/**
* 对应车辆ID
*/
private
String
vehicleId
;
/**
* 备注
*/
private
String
remark
;
}
vehicle/src/main/java/com/xinxincaravan/caravan/vehicle/vo/QueryVehicleWarningMsgVo.java
0 → 100644
View file @
43eb29ac
package
com
.
xinxincaravan
.
caravan
.
vehicle
.
vo
;
import
lombok.Data
;
/**
*车辆相关预警消息
*
*/
@Data
public
class
QueryVehicleWarningMsgVo
{
/**
* 对应车辆code
*/
private
Integer
vehicleCode
;
/**
* 对应车牌号
*/
private
String
numberPlate
;
/**
* 消息类型,详见VehicleMsgType
*/
public
Integer
type
;
private
Integer
page
;
private
Integer
limit
;
}
vehicle/src/main/java/com/xinxincaravan/caravan/vehicle/vo/VehicleWarningMsgQueryVo.java
0 → 100644
View file @
43eb29ac
package
com
.
xinxincaravan
.
caravan
.
vehicle
.
vo
;
import
lombok.Data
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.GenerationType
;
import
javax.persistence.Id
;
import
java.util.Date
;
/**
*车辆相关预警消息
*
*/
@Data
public
class
VehicleWarningMsgQueryVo
{
public
Integer
id
;
/**
* 消息类型,详见VehicleMsgType
*/
public
Integer
type
;
/**
* 消息类型,详见VehicleMsgStatus
*/
public
Integer
status
;
/**
* 消息内容
*/
private
String
msg
;
/**
* 对应规则ID
*/
private
Integer
ruleId
;
/**
* 对应车辆ID
*/
private
String
vehicleId
;
/**
* 消息key,用于去重
*/
private
String
msgKey
;
/**
* 备注
*/
private
String
remark
;
/**
* 对应车辆code
*/
private
Integer
vehicleCode
;
/**
* 对应车牌号
*/
private
String
numberPlate
;
private
Date
createTime
;
private
Date
updateTime
;
}
vehicle/src/main/resources/mapper/VehicleWarningMsgMapper.xml
0 → 100644
View file @
43eb29ac
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.xinxincaravan.caravan.vehicle.mapper.VehicleWarningMsgMapper"
>
<select
id=
"getByPage"
resultType=
"com.xinxincaravan.caravan.vehicle.vo.VehicleWarningMsgQueryVo"
parameterType=
"com.xinxincaravan.caravan.vehicle.vo.QueryVehicleWarningMsgVo"
>
select
vwn.id, vwn.type, vwn.`status`, vwn.msg, vwn.rule_id, vwn.msg_key, vwn.vehicle_id, vwn.create_time, vwn.update_time, vwn.remark, v.code as vehicleCode, v.number_plate
from vehicle_warning_msg vwn left join vehicle v on vwn.vehicle_id = v.id
where
vwn.`status` = 0
<if
test=
"vehicleCode != null"
>
and v.code = #{vehicleCode}
</if>
<if
test=
"numberPlate != null and numberPlate != '' "
>
and v.number_plate = #{numberPlate}
</if>
<if
test=
"type != null"
>
and type = #{type}
</if>
</select>
<select
id=
"getMsgByVehicle"
parameterType=
"String"
resultType=
"com.xinxincaravan.caravan.vehicle.entity.VehicleWarningMsg"
>
select id, type, status, msg, rule_id, msg_key, vehicle_id, create_time, update_time, remark from vehicle_warning_msg where vehicle_id = #{_parameter}
</select>
</mapper>
\ No newline at end of file
vehicle/src/main/resources/mapper/VehicleWarningRuleMapper.xml
0 → 100644
View file @
43eb29ac
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.xinxincaravan.caravan.vehicle.mapper.VehicleWarningRuleMapper"
>
<select
id=
"getByPage"
parameterType=
"com.xinxincaravan.caravan.vehicle.vo.QueryVehicleWarningMsgVo"
resultType=
"com.xinxincaravan.caravan.vehicle.entity.VehicleWarningMsg"
>
</select>
</mapper>
\ No newline at end of file
vehicle/src/test/java/com/xinxincaravan/caravan/vehicle/biz/VehicleWarningMsgBizTest.java
0 → 100644
View file @
43eb29ac
package
com
.
xinxincaravan
.
caravan
.
vehicle
.
biz
;
import
com.xinxincaravan.caravan.vehicle.VehicleApplication
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringJUnit4ClassRunner
;
import
static
org
.
junit
.
Assert
.*;
@RunWith
(
SpringJUnit4ClassRunner
.
class
)
@SpringBootTest
(
classes
={
VehicleApplication
.
class
,
VehicleWarningMsgBizTest
.
class
})
public
class
VehicleWarningMsgBizTest
{
@Autowired
private
VehicleWarningMsgBiz
vehicleWarningMsgBiz
;
@Test
public
void
checkIfNeedWarn
()
{
vehicleWarningMsgBiz
.
checkIfNeedWarn
();
}
}
\ No newline at end of file
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