Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
device-back
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
1
议题
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Matrix
device-back
Commits
d1d6a84f
提交
d1d6a84f
authored
1月 12, 2023
作者:
ljj
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(screen): 修改核查大屏地图的bug
上级
fec4d3f0
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
284 行增加
和
0 行删除
+284
-0
pom.xml
dev-confirmcheck/pom.xml
+4
-0
CheckBlockController.java
.../device/confirmcheck/controller/CheckBlockController.java
+43
-0
CheckDetailVo.java
...tykj/dev/device/confirmcheck/entity/vo/CheckDetailVo.java
+8
-0
DeviceCheckDetailDao.java
.../device/confirmcheck/repository/DeviceCheckDetailDao.java
+12
-0
CheckBlockService.java
...kj/dev/device/confirmcheck/service/CheckBlockService.java
+31
-0
CheckBlockServiceImpl.java
...vice/confirmcheck/service/impl/CheckBlockServiceImpl.java
+148
-0
CheckTimedTask.java
...com/tykj/dev/device/confirmcheck/task/CheckTimedTask.java
+38
-0
没有找到文件。
dev-confirmcheck/pom.xml
浏览文件 @
d1d6a84f
...
@@ -11,6 +11,10 @@
...
@@ -11,6 +11,10 @@
<artifactId>
dev-confirmcheck
</artifactId>
<artifactId>
dev-confirmcheck
</artifactId>
<dependencies>
<dependencies>
<dependency>
<groupId>
com.tykj
</groupId>
<artifactId>
dev-block
</artifactId>
</dependency>
<dependency>
<dependency>
<groupId>
com.tykj
</groupId>
<groupId>
com.tykj
</groupId>
<artifactId>
dev-task
</artifactId>
<artifactId>
dev-task
</artifactId>
...
...
dev-confirmcheck/src/main/java/com/tykj/dev/device/confirmcheck/controller/CheckBlockController.java
0 → 100644
浏览文件 @
d1d6a84f
package
com
.
tykj
.
dev
.
device
.
confirmcheck
.
controller
;
import
com.tykj.dev.config.swagger.AutoDocument
;
import
com.tykj.dev.device.confirmcheck.service.CheckBlockService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* @AUTHOR: cnljj1995@gmail.com
* @DATE: 2023/1/12
*/
@RestController
@RequestMapping
(
value
=
"/check/block"
)
@AutoDocument
@Slf4j
@Api
(
tags
=
"核查区块链模块"
,
description
=
"核查区块链模块"
,
position
=
1
)
public
class
CheckBlockController
{
@Autowired
private
CheckBlockService
checkBlockService
;
@GetMapping
(
"/tof"
)
@ApiOperation
(
value
=
"根据核查详情验真"
)
public
ResponseEntity
tureOrFalse
(
@RequestParam
Integer
detailId
)
{
return
ResponseEntity
.
ok
(
checkBlockService
.
comparisonData
(
detailId
));
}
@GetMapping
(
"/difference"
)
@ApiOperation
(
value
=
"根据核查详情验真"
)
public
ResponseEntity
fixEscowTaskLog
(
@RequestParam
Integer
detailId
)
{
return
ResponseEntity
.
ok
(
checkBlockService
.
findADifference
(
detailId
));
}
}
dev-confirmcheck/src/main/java/com/tykj/dev/device/confirmcheck/entity/vo/CheckDetailVo.java
浏览文件 @
d1d6a84f
...
@@ -7,6 +7,8 @@ import lombok.Data;
...
@@ -7,6 +7,8 @@ import lombok.Data;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
import
javax.persistence.Column
;
import
javax.persistence.Column
;
import
javax.persistence.Transient
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
...
@@ -155,4 +157,10 @@ public class CheckDetailVo {
...
@@ -155,4 +157,10 @@ public class CheckDetailVo {
private
String
remark
;
private
String
remark
;
private
List
<
FileRet
>
checkFileList
=
new
ArrayList
<>();
private
List
<
FileRet
>
checkFileList
=
new
ArrayList
<>();
@ApiModelProperty
(
value
=
"数据创建时间"
)
private
LocalDateTime
createTime
;
@ApiModelProperty
(
value
=
"文件md5"
)
private
String
fileMd5
;
}
}
dev-confirmcheck/src/main/java/com/tykj/dev/device/confirmcheck/repository/DeviceCheckDetailDao.java
浏览文件 @
d1d6a84f
...
@@ -7,6 +7,9 @@ import org.springframework.data.jpa.repository.Modifying;
...
@@ -7,6 +7,9 @@ import org.springframework.data.jpa.repository.Modifying;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.time.LocalDateTime
;
import
java.util.List
;
/**
/**
* @author dengdiyi
* @author dengdiyi
*/
*/
...
@@ -14,6 +17,15 @@ import org.springframework.transaction.annotation.Transactional;
...
@@ -14,6 +17,15 @@ import org.springframework.transaction.annotation.Transactional;
@Transactional
@Transactional
public
interface
DeviceCheckDetailDao
extends
JpaRepository
<
DeviceCheckDetail
,
Integer
>,
JpaSpecificationExecutor
<
DeviceCheckDetail
>
{
public
interface
DeviceCheckDetailDao
extends
JpaRepository
<
DeviceCheckDetail
,
Integer
>,
JpaSpecificationExecutor
<
DeviceCheckDetail
>
{
/**
* 查询指定时间之后更新的数据
* @param time
* @return
*/
@Query
(
"select o from DeviceCheckDetail o where o.updateTime >= ?1 order by o.updateTime desc"
)
List
<
DeviceCheckDetail
>
findAllByUpdateTimeAfter
(
LocalDateTime
time
);
/**
/**
* 根据id更新checkDetail
* 根据id更新checkDetail
*
*
...
...
dev-confirmcheck/src/main/java/com/tykj/dev/device/confirmcheck/service/CheckBlockService.java
0 → 100644
浏览文件 @
d1d6a84f
package
com
.
tykj
.
dev
.
device
.
confirmcheck
.
service
;
import
com.tykj.dev.device.block.entity.vo.BlockTraceabilityParsing
;
/**
* 核查上链服务
* @AUTHOR: cnljj1995@gmail.com
* @DATE: 2023/1/11
*/
public
interface
CheckBlockService
{
/**
* 对详情数据进行上链
*/
void
detailToChain
()
throws
Exception
;
/**
* 根据detailid 比较数据是否被篡改
* @param detailId detai id
* @return t or f
*/
BlockTraceabilityParsing
findADifference
(
Integer
detailId
);
/**
* 根据detailid 比较数据是否被篡改
* @param detailId detai id
* @return t or f
*/
boolean
comparisonData
(
Integer
detailId
);
}
dev-confirmcheck/src/main/java/com/tykj/dev/device/confirmcheck/service/impl/CheckBlockServiceImpl.java
0 → 100644
浏览文件 @
d1d6a84f
package
com
.
tykj
.
dev
.
device
.
confirmcheck
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.tykj.dev.device.block.entity.BlockData
;
import
com.tykj.dev.device.block.entity.bc.BcRecord
;
import
com.tykj.dev.device.block.entity.bc.BcRecordData
;
import
com.tykj.dev.device.block.entity.vo.BlockTraceabilityParsing
;
import
com.tykj.dev.device.block.entity.vo.TraceabilityParsingData
;
import
com.tykj.dev.device.block.service.BlockDataService
;
import
com.tykj.dev.device.block.service.BlockService
;
import
com.tykj.dev.device.confirmcheck.controller.DeviceCheckController
;
import
com.tykj.dev.device.confirmcheck.entity.domain.DeviceCheckDetail
;
import
com.tykj.dev.device.confirmcheck.entity.vo.CheckDetailVo
;
import
com.tykj.dev.device.confirmcheck.repository.DeviceCheckDetailDao
;
import
com.tykj.dev.device.confirmcheck.service.CheckBlockService
;
import
com.tykj.dev.device.file.entity.FileRet
;
import
com.tykj.dev.device.file.util.FileMD5Util
;
import
com.tykj.dev.misc.base.BlockBusinessEnum
;
import
com.tykj.dev.misc.base.BusinessEnum
;
import
com.tykj.dev.misc.utils.JacksonUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
java.io.BufferedWriter
;
import
java.io.File
;
import
java.io.FileWriter
;
import
java.nio.file.Files
;
import
java.nio.file.Paths
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.Comparator
;
import
java.util.List
;
/**
* @AUTHOR: cnljj1995@gmail.com
* @DATE: 2023/1/11
*/
@Service
@Slf4j
public
class
CheckBlockServiceImpl
implements
CheckBlockService
{
@Value
(
"${check.time.last}"
)
private
String
checkTimeLastFile
;
@Autowired
private
DeviceCheckDetailDao
detailDao
;
@Autowired
private
DeviceCheckController
deviceCheckController
;
@Autowired
BlockService
blockService
;
@Autowired
BlockDataService
blockDataService
;
@Override
public
void
detailToChain
()
throws
Exception
{
LocalDateTime
lastTime
=
LocalDateTime
.
now
().
minusYears
(
2
);
DateTimeFormatter
fmt
=
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss:SSS"
);
File
file
=
new
File
(
checkTimeLastFile
);
if
(
file
.
exists
())
{
List
<
String
>
strings
=
Files
.
readAllLines
(
Paths
.
get
(
checkTimeLastFile
));
lastTime
=
LocalDateTime
.
parse
(
strings
.
get
(
0
),
fmt
);
}
List
<
DeviceCheckDetail
>
details
=
detailDao
.
findAllByUpdateTimeAfter
(
lastTime
);
if
(
details
.
size
()
==
0
)
{
log
.
warn
(
"[check] 无上链数据库,不更新"
);
return
;
}
log
.
info
(
"[check] 本次需上链:{}条"
,
details
.
size
());
LocalDateTime
updateTime
=
details
.
stream
().
max
(
Comparator
.
comparing
(
DeviceCheckDetail:
:
getUpdateTime
)).
get
().
getUpdateTime
();
for
(
DeviceCheckDetail
detail
:
details
)
{
CheckDetailVo
data
=
deviceCheckController
.
findDetail
(
detail
.
getId
()).
getBody
().
getData
();
String
localFileMd5
=
""
;
List
<
FileRet
>
checkFileList
=
data
.
getCheckFileList
();
if
(
checkFileList
.
size
()
==
1
)
{
File
files
=
new
File
(
checkFileList
.
get
(
0
).
getFilePath
());
if
(
files
.
exists
())
{
localFileMd5
=
FileMD5Util
.
getFileMD5
(
files
);
}
}
data
.
setFileMd5
(
localFileMd5
);
blockService
.
sendText
(
BlockBusinessEnum
.
CONFIRM_CHECK_DETAIL
.
subCode
,
JacksonUtil
.
toJSon
(
data
),
BusinessEnum
.
CONFIRM_CHECK_DETAIL
.
id
,
detail
.
getId
(),
detail
.
getCheckUnit
());
}
FileWriter
fileWritter
=
new
FileWriter
(
file
.
getName
());
BufferedWriter
bufferWritter
=
new
BufferedWriter
(
fileWritter
);
bufferWritter
.
write
(
updateTime
.
format
(
fmt
).
toString
());
bufferWritter
.
close
();
}
@Override
public
BlockTraceabilityParsing
findADifference
(
Integer
detailId
)
{
BlockData
blockData
=
blockDataService
.
findBillTypeAndBillId
(
BusinessEnum
.
CONFIRM_CHECK_DETAIL
.
id
,
detailId
);
BcRecord
bcRecord
=
blockService
.
fetchRecord
(
BlockBusinessEnum
.
ALLOT
.
subCode
,
blockData
.
getRecordID
());
BcRecordData
bcRecordData
=
bcRecord
.
getData
();
CheckDetailVo
remoteDetail
=
JSON
.
parseObject
(
bcRecord
.
getData
().
getContent
(),
CheckDetailVo
.
class
);
CheckDetailVo
localDetail
=
deviceCheckController
.
findDetail
(
detailId
).
getBody
().
getData
();
String
localFileMd5
=
""
;
List
<
FileRet
>
checkFileList
=
localDetail
.
getCheckFileList
();
if
(
checkFileList
.
size
()
==
1
)
{
File
file
=
new
File
(
checkFileList
.
get
(
0
).
getFilePath
());
if
(
file
.
exists
())
{
localFileMd5
=
FileMD5Util
.
getFileMD5
(
file
);
}
}
BlockTraceabilityParsing
blockTraceabilityParsing
=
bcRecord
.
getData
().
toBlockTraceabilityParsing
();
blockTraceabilityParsing
.
setBusinessTraceabilityParsingData
(
TraceabilityParsingData
.
builder
()
.
billTypeName
(
"核查"
)
//业务名称
.
fileMd5
(
localFileMd5
)
.
initiateUnitName
(
localDetail
.
getCheckUnit
())
//发起单位
.
operationTime
(
detailDao
.
findById
(
detailId
).
get
().
getCreateTime
())
//发起时间
.
build
());
blockTraceabilityParsing
.
setBlockTraceabilityParsingData
(
TraceabilityParsingData
.
builder
()
.
billTypeName
(
"核查"
)
//业务名称
.
fileMd5
(
remoteDetail
.
getFileMd5
())
.
initiateUnitName
(
remoteDetail
.
getCheckUnit
())
//发起单位
.
operationTime
(
detailDao
.
findById
(
detailId
).
get
().
getCreateTime
())
//发起时间
.
build
());
blockTraceabilityParsing
.
setBlockData
(
localDetail
);
blockTraceabilityParsing
.
setCurrentData
(
localDetail
);
return
blockTraceabilityParsing
;
}
@Override
public
boolean
comparisonData
(
Integer
detailId
)
{
return
true
;
}
}
dev-confirmcheck/src/main/java/com/tykj/dev/device/confirmcheck/task/CheckTimedTask.java
0 → 100644
浏览文件 @
d1d6a84f
package
com
.
tykj
.
dev
.
device
.
confirmcheck
.
task
;
import
com.tykj.dev.device.confirmcheck.service.CheckBlockService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
/**
* @AUTHOR: cnljj1995@gmail.com
* @DATE: 2023/1/11
*/
@Component
@Slf4j
public
class
CheckTimedTask
{
@Autowired
private
CheckBlockService
checkBlockService
;
private
boolean
run
=
false
;
@Scheduled
(
cron
=
"0 * * * * ? "
)
public
void
onChain
()
{
log
.
info
(
"[check] 开始上链任务"
);
if
(
run
)
{
log
.
warn
(
"[check] 上次任务未结束,终止"
);
return
;
}
try
{
checkBlockService
.
detailToChain
();
run
=
false
;
}
catch
(
Exception
e
)
{
log
.
error
(
"[check] 上链是啊比:{}"
,
e
.
toString
());
run
=
false
;
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论