Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
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
项目统一框架
amos-boot-biz
Commits
763a306d
Commit
763a306d
authored
Aug 23, 2023
by
tangwei
Browse files
Options
Browse Files
Download
Plain Diff
解决冲突
parents
ac237e89
fa2b3210
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
447 additions
and
11 deletions
+447
-11
BizMessage.java
...om/yeejoin/amos/boot/module/jxiop/api/dto/BizMessage.java
+25
-0
PersonBasicDto.java
...eejoin/amos/boot/module/jxiop/api/dto/PersonBasicDto.java
+8
-0
RiskBizInfoVo.java
...yeejoin/amos/boot/module/jxiop/api/dto/RiskBizInfoVo.java
+24
-0
RiskDynamicDetailsVo.java
.../amos/boot/module/jxiop/api/dto/RiskDynamicDetailsVo.java
+17
-0
TableContentVo.java
...eejoin/amos/boot/module/jxiop/api/dto/TableContentVo.java
+15
-0
PersonBasic.java
...eejoin/amos/boot/module/jxiop/api/entity/PersonBasic.java
+7
-1
FeignBasicAuthRequestInterceptor.java
...ule/jxiop/api/feign/FeignBasicAuthRequestInterceptor.java
+52
-0
FeignConfiguration.java
.../amos/boot/module/jxiop/api/feign/FeignConfiguration.java
+34
-0
FeignErrorDecoder.java
...n/amos/boot/module/jxiop/api/feign/FeignErrorDecoder.java
+32
-0
McbWarningFeign.java
...oin/amos/boot/module/jxiop/api/feign/McbWarningFeign.java
+23
-0
PersonBasicController.java
...ot/module/jxiop/biz/controller/PersonBasicController.java
+55
-0
PersonYardMessage.java
...in/amos/boot/module/jxiop/biz/emqx/PersonYardMessage.java
+99
-0
StationYardMessage.java
...n/amos/boot/module/jxiop/biz/emqx/StationYardMessage.java
+3
-3
PersonBasicServiceImpl.java
...module/jxiop/biz/service/impl/PersonBasicServiceImpl.java
+0
-0
PersonYardTimeTask.java
...oot/module/jxiop/biz/service/impl/PersonYardTimeTask.java
+53
-7
No files found.
amos-boot-system-jxiop/amos-boot-module-jxiop-api/src/main/java/com/yeejoin/amos/boot/module/jxiop/api/dto/BizMessage.java
0 → 100644
View file @
763a306d
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jxiop
.
api
.
dto
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.ToString
;
/**
* @author LiuLin
* @date 2023年08月02日 11:02
*/
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public
class
BizMessage
{
private
String
indexKey
;
private
String
indexValue
;
private
String
traceId
;
private
RiskBizInfoVo
bizInfo
;
/**
* 数据来源:实时数据、周期数据
*/
String
dataSource
;
}
amos-boot-system-jxiop/amos-boot-module-jxiop-api/src/main/java/com/yeejoin/amos/boot/module/jxiop/api/dto/PersonBasicDto.java
View file @
763a306d
...
...
@@ -90,4 +90,12 @@ public class PersonBasicDto extends BaseDto {
@ApiModelProperty
(
value
=
"岗位"
)
private
String
postName
;
@ApiModelProperty
(
value
=
"赋码颜色"
)
private
String
qrcodeColor
;
@ApiModelProperty
(
value
=
"赋码描述"
)
private
String
qrcodeDesc
;
}
amos-boot-system-jxiop/amos-boot-module-jxiop-api/src/main/java/com/yeejoin/amos/boot/module/jxiop/api/dto/RiskBizInfoVo.java
0 → 100644
View file @
763a306d
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jxiop
.
api
.
dto
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author LiuLin
* @date 2023年08月02日 11:02
*/
@Data
public
class
RiskBizInfoVo
{
private
String
warningObjectName
;
private
String
warningObjectCode
;
private
String
warningTime
;
private
String
sourceAttribution
;
private
String
sourceAttributionDesc
;
private
String
sourceSupplyField
;
private
String
bussId
;
private
String
bussName
;
private
String
type
;
private
List
<
RiskDynamicDetailsVo
>
dynamicDetails
;
private
String
warningObjectType
;
}
amos-boot-system-jxiop/amos-boot-module-jxiop-api/src/main/java/com/yeejoin/amos/boot/module/jxiop/api/dto/RiskDynamicDetailsVo.java
0 → 100644
View file @
763a306d
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jxiop
.
api
.
dto
;
import
lombok.Data
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author LiuLin
* @date 2023年08月02日 11:02
*/
@Data
public
class
RiskDynamicDetailsVo
{
private
String
tabName
;
private
List
<
TableContentVo
>
tabContent
;
private
Map
<
String
,
Object
>
specialMap
;
}
amos-boot-system-jxiop/amos-boot-module-jxiop-api/src/main/java/com/yeejoin/amos/boot/module/jxiop/api/dto/TableContentVo.java
0 → 100644
View file @
763a306d
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jxiop
.
api
.
dto
;
import
lombok.Data
;
/**
* @author LiuLin
* @date 2023年08月02日 11:02
*/
@Data
public
class
TableContentVo
{
private
String
key
;
private
String
label
;
private
Object
value
;
private
String
type
;
}
amos-boot-system-jxiop/amos-boot-module-jxiop-api/src/main/java/com/yeejoin/amos/boot/module/jxiop/api/entity/PersonBasic.java
View file @
763a306d
...
...
@@ -151,8 +151,14 @@ public class PersonBasic extends BaseEntity {
private
String
postName
;
/**
*
岗位
*
赋码颜色
*/
@TableField
(
"qrcode_color"
)
private
String
qrcodeColor
;
/**
* 赋码颜色描述
*/
@TableField
(
"qrcode_desc"
)
private
String
qrcodeDesc
;
}
amos-boot-system-jxiop/amos-boot-module-jxiop-api/src/main/java/com/yeejoin/amos/boot/module/jxiop/api/feign/FeignBasicAuthRequestInterceptor.java
0 → 100644
View file @
763a306d
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jxiop
.
api
.
feign
;
import
com.yeejoin.amos.component.robot.AmosRequestContext
;
import
feign.RequestInterceptor
;
import
feign.RequestTemplate
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.servlet.http.HttpServletRequest
;
/**
* @author fengwang
* @date 2022-07-28.
*/
public
class
FeignBasicAuthRequestInterceptor
implements
RequestInterceptor
{
@Autowired
AmosRequestContext
amosAuth
;
public
FeignBasicAuthRequestInterceptor
()
{
}
@Override
public
void
apply
(
RequestTemplate
template
)
{
ServletRequestAttributes
attributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
if
(
attributes
!=
null
)
{
HttpServletRequest
request
=
attributes
.
getRequest
();
/* Get token from header */
String
authToken
=
request
.
getHeader
(
"token"
);
/* If token not found get it from request parameter */
if
(
StringUtils
.
isBlank
(
authToken
))
{
authToken
=
request
.
getHeader
(
"X-Access-Token"
);
}
template
.
header
(
"X-Access-Token"
,
authToken
);
template
.
header
(
"token"
,
authToken
);
template
.
header
(
"appKey"
,
request
.
getHeader
(
"appKey"
));
template
.
header
(
"product"
,
request
.
getHeader
(
"product"
));
template
.
header
(
"clientType"
,
"feignClient"
);
}
else
{
template
.
header
(
"X-Access-Token"
,
amosAuth
.
getToken
());
template
.
header
(
"token"
,
amosAuth
.
getToken
());
template
.
header
(
"appKey"
,
amosAuth
.
getAppKey
());
template
.
header
(
"product"
,
amosAuth
.
getProduct
());
template
.
header
(
"clientType"
,
"feignClient"
);
}
}
}
amos-boot-system-jxiop/amos-boot-module-jxiop-api/src/main/java/com/yeejoin/amos/boot/module/jxiop/api/feign/FeignConfiguration.java
0 → 100644
View file @
763a306d
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jxiop
.
api
.
feign
;
import
feign.codec.Encoder
;
import
feign.form.spring.SpringFormEncoder
;
import
org.springframework.beans.factory.ObjectFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.http.HttpMessageConverters
;
import
org.springframework.cloud.openfeign.support.SpringEncoder
;
import
org.springframework.context.annotation.Bean
;
/**
* @author fengwang
* @date 2022-07-28.
*/
public
class
FeignConfiguration
{
@Autowired
private
ObjectFactory
<
HttpMessageConverters
>
messageConverters
;
@Bean
public
Encoder
feignFormEncoder
()
{
return
new
SpringFormEncoder
(
new
SpringEncoder
(
messageConverters
));
}
@Bean
public
FeignBasicAuthRequestInterceptor
basicAuthRequestInterceptor
()
{
return
new
FeignBasicAuthRequestInterceptor
();
}
@Bean
public
FeignErrorDecoder
errorDecoder
(){
return
new
FeignErrorDecoder
();
}
}
amos-boot-system-jxiop/amos-boot-module-jxiop-api/src/main/java/com/yeejoin/amos/boot/module/jxiop/api/feign/FeignErrorDecoder.java
0 → 100644
View file @
763a306d
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jxiop
.
api
.
feign
;
import
com.alibaba.fastjson.JSONObject
;
import
feign.Response
;
import
feign.Util
;
import
feign.codec.ErrorDecoder
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.io.IOException
;
/**
* @author fengwang
* @date 2022-07-28.
*/
public
class
FeignErrorDecoder
implements
ErrorDecoder
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
FeignErrorDecoder
.
class
);
@Override
public
Exception
decode
(
String
methodKey
,
Response
response
)
{
String
msg
=
null
;
try
{
msg
=
Util
.
toString
(
response
.
body
().
asReader
(
Util
.
UTF_8
));
JSONObject
object
=
JSONObject
.
parseObject
(
msg
);
throw
new
RuntimeException
(
object
.
get
(
"devMessage"
).
toString
());
}
catch
(
IOException
e
)
{
log
.
error
(
"feign 调用失败"
+
e
.
getMessage
());
}
throw
new
RuntimeException
(
methodKey
+
"远程调用失败"
);
}
}
amos-boot-system-jxiop/amos-boot-module-jxiop-api/src/main/java/com/yeejoin/amos/boot/module/jxiop/api/feign/McbWarningFeign.java
0 → 100644
View file @
763a306d
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jxiop
.
api
.
feign
;
import
com.yeejoin.amos.component.feign.config.InnerInvokException
;
import
com.yeejoin.amos.component.feign.model.FeignClientResult
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
java.util.List
;
import
java.util.Map
;
@FeignClient
(
name
=
"${mcb.warning.name:MCB-SERVER}"
,
path
=
"warning"
,
configuration
=
{
FeignConfiguration
.
class
})
public
interface
McbWarningFeign
{
/**
* 根据风险来源查询人员红黄绿吗信息
*/
@GetMapping
(
"/task/getQrCodeCount"
)
FeignClientResult
<
Map
<
String
,
Object
>>
getQrCodeCount
(
@RequestParam
(
required
=
false
,
value
=
"parentCode"
)
String
parentCode
,
@RequestParam
(
value
=
"warningObjectType"
)
String
warningObjectType
);
}
amos-boot-system-jxiop/amos-boot-module-jxiop-biz/src/main/java/com/yeejoin/amos/boot/module/jxiop/biz/controller/PersonBasicController.java
View file @
763a306d
...
...
@@ -3,7 +3,10 @@ package com.yeejoin.amos.boot.module.jxiop.biz.controller;
import
com.yeejoin.amos.boot.module.jxiop.api.dto.PersonDto
;
import
com.yeejoin.amos.boot.module.jxiop.api.dto.StationBasicDto
;
import
com.yeejoin.amos.boot.module.jxiop.api.dto.UserMapperDto
;
import
com.yeejoin.amos.boot.module.jxiop.api.feign.McbWarningFeign
;
import
com.yeejoin.amos.boot.module.jxiop.api.mapper.PersonBasicMapper
;
import
com.yeejoin.amos.component.feign.config.InnerInvokException
;
import
com.yeejoin.amos.component.feign.model.FeignClientResult
;
import
org.apache.poi.ss.formula.functions.T
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
...
@@ -12,6 +15,7 @@ import io.swagger.annotations.Api;
import
org.springframework.web.bind.annotation.RestController
;
import
com.yeejoin.amos.boot.biz.common.controller.BaseController
;
import
java.math.BigDecimal
;
import
java.text.ParseException
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -44,6 +48,13 @@ public class PersonBasicController extends BaseController {
@Autowired
PersonBasicServiceImpl
personBasicServiceImpl
;
@Autowired
McbWarningFeign
mcbWarningFeign
;
@Autowired
PersonBasicMapper
personBasicMapper
;
/**
* 新增人员基本信息
*
...
...
@@ -208,4 +219,48 @@ public class PersonBasicController extends BaseController {
return
ResponseHelper
.
buildResponse
(
resultList
);
}
/**
* 评估大屏 - 人员赋码数量等统计
*
* @param parentCode 父级code
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/getQrCodeCount"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"评估大屏 - 人员赋码数量等统计"
,
notes
=
"评估大屏 - 人员赋码数量等统计"
)
public
ResponseModel
<
Map
<
String
,
Object
>>
getQrCodeCount
(
@RequestParam
(
required
=
false
,
value
=
"parentCode"
)
String
parentCode
)
{
FeignClientResult
<
Map
<
String
,
Object
>>
sevenEntity
=
null
;
try
{
sevenEntity
=
mcbWarningFeign
.
getQrCodeCount
(
parentCode
,
"RYFM"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
if
(
sevenEntity
!=
null
&&
200
==
sevenEntity
.
getStatus
())
{
Map
<
String
,
Object
>
result
=
sevenEntity
.
getResult
();
String
red
=
result
.
get
(
"red"
).
toString
();
String
yellow
=
result
.
get
(
"yellow"
).
toString
();
String
redToGreen
=
result
.
get
(
"redToGreen"
).
toString
();
String
yellowToGreen
=
result
.
get
(
"yellowToGreen"
).
toString
();
Integer
countAll
=
personBasicMapper
.
getPersonYardByPageCount
(
parentCode
);
result
.
put
(
"redToGreenPercent"
,
getPercent
(
new
BigDecimal
(
red
),
new
BigDecimal
(
countAll
)));
result
.
put
(
"redPercent"
,
getPercent
(
new
BigDecimal
(
redToGreen
),
new
BigDecimal
(
countAll
)));
result
.
put
(
"yellowToGreenPercent"
,
getPercent
(
new
BigDecimal
(
yellow
),
new
BigDecimal
(
countAll
)));
result
.
put
(
"yellowPercent"
,
getPercent
(
new
BigDecimal
(
yellowToGreen
),
new
BigDecimal
(
countAll
)));
return
ResponseHelper
.
buildResponse
(
result
);
}
return
ResponseHelper
.
buildResponse
(
null
);
}
/**
* 百分比
*
* @param numerator 分子
* @param denominator 分母
* @return 百分比
*/
private
double
getPercent
(
BigDecimal
numerator
,
BigDecimal
denominator
)
{
BigDecimal
multiply
=
numerator
.
divide
(
denominator
.
compareTo
(
BigDecimal
.
ZERO
)
!=
0
?
denominator
:
new
BigDecimal
(
1
),
4
,
BigDecimal
.
ROUND_DOWN
).
multiply
(
new
BigDecimal
(
100
));
return
Math
.
abs
(
multiply
.
doubleValue
());
}
}
amos-boot-system-jxiop/amos-boot-module-jxiop-biz/src/main/java/com/yeejoin/amos/boot/module/jxiop/biz/emqx/PersonYardMessage.java
0 → 100644
View file @
763a306d
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jxiop
.
biz
.
emqx
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.ObjectUtils
;
import
com.yeejoin.amos.boot.biz.common.entity.BaseEntity
;
import
com.yeejoin.amos.boot.module.jxiop.api.entity.PersonBasic
;
import
com.yeejoin.amos.boot.module.jxiop.api.mapper.PersonBasicMapper
;
import
com.yeejoin.amos.boot.module.jxiop.api.mapper.StationBasicMapper
;
import
com.yeejoin.amos.boot.module.jxiop.biz.service.impl.PersonBasicServiceImpl
;
import
com.yeejoin.amos.component.robot.AmosRequestContext
;
import
lombok.extern.slf4j.Slf4j
;
import
org.eclipse.paho.client.mqttv3.MqttException
;
import
org.eclipse.paho.client.mqttv3.MqttMessage
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.stereotype.Component
;
import
org.typroject.tyboot.component.emq.EmqKeeper
;
import
org.typroject.tyboot.component.emq.EmqxListener
;
import
org.typroject.tyboot.core.foundation.context.RequestContext
;
import
javax.annotation.PostConstruct
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.BlockingQueue
;
import
java.util.concurrent.LinkedBlockingQueue
;
@Component
@EnableScheduling
@Slf4j
public
class
PersonYardMessage
extends
EmqxListener
{
@Autowired
private
AmosRequestContext
amosAuth
;
@Autowired
protected
EmqKeeper
emqKeeper
;
@Autowired
private
PersonBasicMapper
personBasicMapper
;
// 江西电建接收红黄绿码主题
private
static
final
String
RYFM_WARNING_CODING
=
"ryfm/warning/coding"
;
private
static
final
BlockingQueue
<
JSONObject
>
blockingQueue
=
new
LinkedBlockingQueue
<
JSONObject
>();
@PostConstruct
void
init
()
throws
Exception
{
new
Thread
(
taskRunnable
).
start
();
emqKeeper
.
subscript
(
RYFM_WARNING_CODING
,
2
,
this
);
}
@Override
public
void
processMessage
(
String
topic
,
MqttMessage
message
)
throws
Exception
{
log
.
info
(
"人员赋码消息{}"
,
new
String
(
message
.
getPayload
()));
JSONObject
ja
=
JSON
.
parseObject
(
new
String
(
message
.
getPayload
()));
blockingQueue
.
add
(
ja
);
}
Runnable
taskRunnable
=
new
Runnable
()
{
@Override
public
void
run
()
{
boolean
isRun
=
true
;
int
k
=
0
;
while
(
isRun
)
{
k
++;
isRun
=
k
<
Integer
.
MAX_VALUE
;
try
{
JSONObject
analysisResult
=
blockingQueue
.
take
();
// RequestContext.setAppKey(amosAuth.getAppKey());
// RequestContext.setProduct(amosAuth.getProduct());
// RequestContext.setToken(amosAuth.getToken());
jxIopUpdate
(
analysisResult
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
};
public
void
jxIopUpdate
(
JSONObject
analysisResult
)
{
log
.
info
(
"人员赋码数据:{}"
,
analysisResult
);
String
warningObjectCode
=
String
.
valueOf
(
analysisResult
.
get
(
"warningObjectCode"
));
String
codeColor
=
String
.
valueOf
(
analysisResult
.
get
(
"codeColor"
));
PersonBasic
personBasic
=
personBasicMapper
.
selectById
(
warningObjectCode
);
if
(
ObjectUtils
.
isEmpty
(
personBasic
))
{
try
{
emqKeeper
.
getMqttClient
().
publish
(
"ryfm/warning/coding"
,
analysisResult
.
toJSONString
().
getBytes
(),
2
,
Boolean
.
FALSE
);
}
catch
(
MqttException
e
)
{
e
.
printStackTrace
();
}
}
else
{
personBasic
.
setQrcodeColor
(
codeColor
);
personBasicMapper
.
updateById
(
personBasic
);
}
}
}
amos-boot-system-jxiop/amos-boot-module-jxiop-biz/src/main/java/com/yeejoin/amos/boot/module/jxiop/biz/emqx/StationYardMessage.java
View file @
763a306d
...
...
@@ -64,9 +64,9 @@ public class StationYardMessage extends EmqxListener {
isRun
=
k
<
Integer
.
MAX_VALUE
;
try
{
List
<
Map
<
String
,
String
>>
analysisResult
=
blockingQueue
.
take
();
RequestContext
.
setAppKey
(
amosAuth
.
getAppKey
());
RequestContext
.
setProduct
(
amosAuth
.
getProduct
());
RequestContext
.
setToken
(
amosAuth
.
getToken
());
//
RequestContext.setAppKey(amosAuth.getAppKey());
//
RequestContext.setProduct(amosAuth.getProduct());
//
RequestContext.setToken(amosAuth.getToken());
jxIopUpdate
(
analysisResult
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
...
...
amos-boot-system-jxiop/amos-boot-module-jxiop-biz/src/main/java/com/yeejoin/amos/boot/module/jxiop/biz/service/impl/PersonBasicServiceImpl.java
View file @
763a306d
This diff is collapsed.
Click to expand it.
amos-boot-system-jxiop/amos-boot-module-jxiop-biz/src/main/java/com/yeejoin/amos/boot/module/jxiop/biz/service/impl/PersonYardTimeTask.java
View file @
763a306d
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jxiop
.
biz
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.core.toolkit.CollectionUtils
;
import
com.baomidou.mybatisplus.core.toolkit.ObjectUtils
;
import
com.yeejoin.amos.boot.biz.common.feign.AmosFeignService
;
import
com.yeejoin.amos.boot.biz.common.utils.DateUtils
;
import
com.yeejoin.amos.boot.biz.common.utils.RedisUtils
;
import
com.yeejoin.amos.boot.module.jxiop.api.Enum.QrcodeColorEnum
;
import
com.yeejoin.amos.boot.module.jxiop.api.dto.BizMessage
;
import
com.yeejoin.amos.boot.module.jxiop.api.dto.RiskBizInfoVo
;
import
com.yeejoin.amos.boot.module.jxiop.api.entity.PersonAccount
;
import
com.yeejoin.amos.boot.module.jxiop.api.entity.PersonBasic
;
import
com.yeejoin.amos.boot.module.jxiop.api.entity.PersonCertificate
;
import
com.yeejoin.amos.boot.module.jxiop.api.mapper.PersonAccountMapper
;
import
com.yeejoin.amos.boot.module.jxiop.api.mapper.PersonBasicMapper
;
import
com.yeejoin.amos.boot.module.jxiop.api.mapper.PersonCertificateMapper
;
import
com.yeejoin.amos.boot.module.jxiop.api.util.Constants
;
import
com.yeejoin.amos.feign.systemctl.model.DictionarieValueModel
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.eclipse.paho.client.mqttv3.MqttException
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
org.typroject.tyboot.component.emq.EmqKeeper
;
import
java.nio.charset.StandardCharsets
;
import
java.text.ParseException
;
import
java.util.*
;
import
java.util.stream.Collectors
;
...
...
@@ -42,6 +50,14 @@ public class PersonYardTimeTask {
@Autowired
private
RedisUtils
redisUtils
;
@Autowired
private
PersonAccountMapper
personAccountMapper
;
@Autowired
protected
EmqKeeper
emqKeeper
;
@Scheduled
(
cron
=
"0 0 0 1/1 * ? "
)
public
void
timeYardTimeTask
()
{
if
(!
redisUtils
.
hasKey
(
Constants
.
JXIOP_DICT_POST
)
||
!
redisUtils
.
hasKey
(
Constants
.
JXIOP_DICT_CERTIFICATES
))
{
...
...
@@ -55,13 +71,15 @@ public class PersonYardTimeTask {
List
<
PersonCertificate
>
personCertificates
=
personCertificateMapper
.
selectList
(
null
);
List
<
PersonAccount
>
personAccounts
=
personAccountMapper
.
selectList
(
null
);
Map
<
Long
,
PersonAccount
>
personAccountMap
=
personAccounts
.
stream
().
collect
(
Collectors
.
toMap
(
PersonAccount:
:
getPersonId
,
t
->
t
));
Map
<
Long
,
List
<
PersonCertificate
>>
perCertificateMap
=
personCertificates
.
stream
().
filter
(
item
->
ObjectUtils
.
isNotEmpty
(
item
.
getPersonId
())).
collect
(
Collectors
.
groupingBy
(
PersonCertificate:
:
getPersonId
));
List
<
PersonBasic
>
personBasics
=
new
ArrayList
<>();
personBasicList
.
forEach
(
personBasic
->
{
List
<
PersonCertificate
>
personCertificateList
=
perCertificate
Map
.
get
(
personBasic
.
getSequenceNbr
());
PersonAccount
personAccount
=
personAccount
Map
.
get
(
personBasic
.
getSequenceNbr
());
String
yuanShiQrcodeColor
=
personBasic
.
getQrcodeColor
(
);
List
<
PersonCertificate
>
personCertificateList
=
perCertificateMap
.
get
(
personBasic
.
getSequenceNbr
()
);
//默认红码
personBasic
.
setQrcodeColor
(
QrcodeColorEnum
.
RED
.
getCode
());
// 该岗位应获得的证书
...
...
@@ -97,18 +115,46 @@ public class PersonYardTimeTask {
list
.
remove
(
item
.
getCertificateName
());
}
}
String
qrcodeDescOld
=
personBasic
.
getQrcodeDesc
();
String
qrcodeColorOld
=
personBasic
.
getQrcodeColor
();
if
(
CollectionUtils
.
isEmpty
(
list
)
&&
isInMonth
==
0
&&
isOver
==
0
)
{
personBasic
.
setQrcodeColor
(
QrcodeColorEnum
.
GREEN
.
getCode
());
personBasic
.
setQrcodeDesc
(
"证书齐全"
);
}
else
if
(
CollectionUtils
.
isEmpty
(
list
)
&&
isOver
==
1
)
{
personBasic
.
setQrcode
Color
(
QrcodeColorEnum
.
RED
.
getCode
()
);
personBasic
.
setQrcode
Desc
(
"证书不全"
);
}
else
if
(
CollectionUtils
.
isEmpty
(
list
)
&&
isOver
==
0
&&
isInMonth
==
1
)
{
personBasic
.
setQrcode
Color
(
QrcodeColorEnum
.
YELLOW
.
getCode
()
);
personBasic
.
setQrcode
Desc
(
"证书临期"
);
}
if
(!
yuanShiQrcodeColor
.
equals
(
personBasic
.
getQrcodeColor
()))
{
if
(!
qrcodeDescOld
.
equals
(
personBasic
.
getQrcodeDesc
()))
{
personBasic
.
setRecDate
(
new
Date
());
personBasics
.
add
(
personBasic
);
personBasicService
.
updateById
(
personBasic
);
if
((
"证书不全"
.
equals
(
personBasic
.
getQrcodeDesc
())
||
"证书临期"
.
equals
(
personBasic
.
getQrcodeDesc
())))
{
BizMessage
bizMessage
=
new
BizMessage
();
bizMessage
.
setIndexKey
(
"RYFM"
);
bizMessage
.
setIndexValue
(
personBasic
.
getPostName
()
+
personBasic
.
getQrcodeDesc
());
RiskBizInfoVo
riskBizInfoVo
=
personBasicService
.
fetchData
(
personBasic
,
personAccount
);
bizMessage
.
setBizInfo
(
riskBizInfoVo
);
try
{
emqKeeper
.
getMqttClient
().
publish
(
PersonBasicServiceImpl
.
RYFM_DATA_MQTT_TOPIC
,
JSON
.
toJSONString
(
bizMessage
).
getBytes
(
StandardCharsets
.
UTF_8
),
2
,
false
);
}
catch
(
MqttException
e
)
{
e
.
printStackTrace
();
}
}
}
else
if
(
"证书齐全"
.
equals
(
personBasic
.
getQrcodeDesc
()))
{
HashMap
<
String
,
String
>
personMap
=
new
HashMap
<>();
personMap
.
put
(
"objectId"
,
String
.
valueOf
(
personBasic
.
getSequenceNbr
()));
personMap
.
put
(
"qrCodeColor"
,
qrcodeColorOld
);
personMap
.
put
(
"warningObjectType"
,
"RYFM"
);
personMap
.
put
(
"sourceAttribution"
,
personBasic
.
getProjectOrgCode
());
personMap
.
put
(
"sourceAttributionDesc"
,
personAccount
.
getProjectName
());
try
{
emqKeeper
.
getMqttClient
().
publish
(
PersonBasicServiceImpl
.
RYFM_GREEN
,
JSON
.
toJSONString
(
personMap
).
getBytes
(
StandardCharsets
.
UTF_8
),
2
,
false
);
}
catch
(
MqttException
e
)
{
e
.
printStackTrace
();
}
}
});
personBasicService
.
updateBatchById
(
personBasics
);
}
}
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