Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
device-back
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
1
议题
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Matrix
device-back
Commits
cdbc04e1
提交
cdbc04e1
authored
2月 07, 2023
作者:
zhoushaopan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(维修,入库模块): 新增业务数据模块进行上链
新增业务数据模块进行上链
上级
57c22074
显示空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
542 行增加
和
35 行删除
+542
-35
pom.xml
dev-repair/pom.xml
+6
-0
RepairBlockController.java
...j/dev/device/repair/controller/RepairBlockController.java
+62
-0
RepairBackBillService.java
...tykj/dev/device/repair/service/RepairBackBillService.java
+15
-0
RepairSendBillService.java
...tykj/dev/device/repair/service/RepairSendBillService.java
+12
-1
RepairBackBillServiceImpl.java
...device/repair/service/impl/RepairBackBillServiceImpl.java
+125
-11
RepairSendBillServiceImpl.java
...device/repair/service/impl/RepairSendBillServiceImpl.java
+119
-6
pom.xml
dev-storage/pom.xml
+6
-0
StorageBlockController.java
...dev/device/storage/controller/StorageBlockController.java
+41
-0
StorageBillService.java
...m/tykj/dev/device/storage/service/StorageBillService.java
+15
-0
StorageBillServiceImpl.java
...v/device/storage/service/impl/StorageBillServiceImpl.java
+141
-17
没有找到文件。
dev-repair/pom.xml
浏览文件 @
cdbc04e1
...
...
@@ -48,6 +48,11 @@
<groupId>
com.tykj
</groupId>
<artifactId>
dev-file
</artifactId>
</dependency>
<dependency>
<groupId>
com.tykj
</groupId>
<artifactId>
dev-block
</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
dev-repair/src/main/java/com/tykj/dev/device/repair/controller/RepairBlockController.java
0 → 100644
浏览文件 @
cdbc04e1
package
com
.
tykj
.
dev
.
device
.
repair
.
controller
;
import
com.tykj.dev.config.swagger.AutoDocument
;
import
com.tykj.dev.device.repair.service.HistoryPepairService
;
import
com.tykj.dev.device.repair.service.RepairBackBillService
;
import
com.tykj.dev.device.repair.service.RepairSendBillService
;
import
com.tykj.dev.device.repair.subject.vo.HistorySelectVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
/**
* @author zjm
* @version 1.0.0
* @ClassName HistoryPepairContriller.java
* @Description TODO
* @createTime 2021年09月17日 10:21:00
*/
@RestController
@RequestMapping
(
value
=
"/repairBlock"
)
@AutoDocument
@Api
(
tags
=
"维修上链模块"
,
description
=
"维修上链模块"
)
public
class
RepairBlockController
{
@Resource
private
RepairSendBillService
repairSendBillService
;
@Resource
private
RepairBackBillService
repairBackBillService
;
@GetMapping
(
value
=
"send/checkTrueData/{billId}"
)
@ApiOperation
(
value
=
"根据送修ID进行对应业务的验证"
,
notes
=
"根据送修ID进行对应业务的验证"
)
public
ResponseEntity
sendCheckTrueData
(
@PathVariable
Integer
billId
){
return
ResponseEntity
.
ok
(
repairSendBillService
.
checkTrueData
(
billId
));
}
@GetMapping
(
value
=
"send/traceabilityParsing/{billId}"
)
@ApiOperation
(
value
=
"根据送修ID进行对应业务的溯源"
,
notes
=
"根据送修ID进行对应业务的溯源"
)
public
ResponseEntity
sendTraceabilityParsing
(
@PathVariable
Integer
billId
){
return
ResponseEntity
.
ok
(
repairSendBillService
.
traceabilityParsing
(
billId
));
}
@GetMapping
(
value
=
"back/checkTrueData/{billId}"
)
@ApiOperation
(
value
=
"根据维修退回ID进行对应业务的验证"
,
notes
=
"根据维修退回ID进行对应业务的验证"
)
public
ResponseEntity
backCheckTrueData
(
@PathVariable
Integer
billId
){
return
ResponseEntity
.
ok
(
repairBackBillService
.
checkTrueData
(
billId
));
}
@GetMapping
(
value
=
"back/traceabilityParsing/{billId}"
)
@ApiOperation
(
value
=
"根据维修退回ID进行对应业务的溯源"
,
notes
=
"根据维修退回ID进行对应业务的溯源"
)
public
ResponseEntity
backTraceabilityParsing
(
@PathVariable
Integer
billId
){
return
ResponseEntity
.
ok
(
repairBackBillService
.
traceabilityParsing
(
billId
));
}
}
dev-repair/src/main/java/com/tykj/dev/device/repair/service/RepairBackBillService.java
浏览文件 @
cdbc04e1
package
com
.
tykj
.
dev
.
device
.
repair
.
service
;
import
com.tykj.dev.device.block.entity.vo.BlockTraceabilityParsing
;
import
com.tykj.dev.device.file.entity.FileRet
;
import
com.tykj.dev.device.repair.subject.domin.RepairBackBill
;
import
com.tykj.dev.device.repair.subject.vo.RepairBillSelectVo
;
...
...
@@ -27,4 +28,18 @@ public interface RepairBackBillService extends RepairPublicService<RepairBackBil
* @return
*/
Map
<
String
,
List
<
FileRet
>>
getFileList
(
Integer
taskId
);
/**
* 验证接口
* @param billId 业务id
* @return 正确与否
*/
boolean
checkTrueData
(
Integer
billId
);
/**
* 溯源接口
* @param billId 业务id
* @return 溯源信息实体
*/
BlockTraceabilityParsing
traceabilityParsing
(
Integer
billId
);
}
dev-repair/src/main/java/com/tykj/dev/device/repair/service/RepairSendBillService.java
浏览文件 @
cdbc04e1
package
com
.
tykj
.
dev
.
device
.
repair
.
service
;
import
com.tykj.dev.device.block.entity.vo.BlockTraceabilityParsing
;
import
com.tykj.dev.device.file.entity.FileRet
;
import
com.tykj.dev.device.repair.subject.domin.RepairSendBill
;
import
com.tykj.dev.device.repair.subject.vo.RepairBillSelectVo
;
...
...
@@ -43,8 +44,18 @@ public interface RepairSendBillService {
RepairSendBill
findByRepairdId
(
Integer
repairId
);
/**
*
* 验证接口
* @param billId 业务id
* @return 正确与否
*/
boolean
checkTrueData
(
Integer
billId
);
/**
* 溯源接口
* @param billId 业务id
* @return 溯源信息实体
*/
BlockTraceabilityParsing
traceabilityParsing
(
Integer
billId
);
}
dev-repair/src/main/java/com/tykj/dev/device/repair/service/impl/RepairBackBillServiceImpl.java
浏览文件 @
cdbc04e1
package
com
.
tykj
.
dev
.
device
.
repair
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.github.wenhao.jpa.PredicateBuilder
;
import
com.github.wenhao.jpa.Specifications
;
import
com.tykj.dev.blockcha.subject.entity.BcHash
;
import
com.tykj.dev.blockcha.subject.service.BlockChainUtil
;
import
com.tykj.dev.config.TaskBeanConfig
;
import
com.tykj.dev.config.base.FileName
;
import
com.tykj.dev.device.block.entity.BlockData
;
import
com.tykj.dev.device.block.entity.bc.BcRecord
;
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.file.entity.FileRet
;
import
com.tykj.dev.device.file.service.FilesUtil
;
import
com.tykj.dev.device.library.subject.vo.ScriptSaveVo
;
import
com.tykj.dev.device.repair.repository.RepairBackBillDao
;
import
com.tykj.dev.device.repair.service.RepairBackBillService
;
import
com.tykj.dev.device.repair.service.RepairBillService
;
import
com.tykj.dev.device.repair.subject.domin.RepairBackBill
;
import
com.tykj.dev.device.repair.subject.domin.RepairBill
;
import
com.tykj.dev.device.repair.subject.domin.RepairSendBill
;
import
com.tykj.dev.device.repair.subject.vo.RepairBillSelectVo
;
import
com.tykj.dev.device.task.service.TaskService
;
import
com.tykj.dev.device.user.util.UserUtils
;
import
com.tykj.dev.misc.base.BlockBusinessEnum
;
import
com.tykj.dev.misc.base.BusinessEnum
;
import
com.tykj.dev.misc.exception.ApiException
;
import
com.tykj.dev.misc.utils.DateUtil
;
import
com.tykj.dev.misc.utils.JacksonUtil
;
import
com.tykj.dev.misc.utils.ResultUtil
;
import
com.tykj.dev.misc.utils.StringSplitUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
...
...
@@ -24,6 +40,7 @@ import org.springframework.data.jpa.domain.Specification;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
javax.persistence.Transient
;
import
java.lang.reflect.Field
;
import
java.util.HashMap
;
...
...
@@ -31,6 +48,7 @@ import java.util.List;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.stream.Collectors
;
/**
* @author zjm
...
...
@@ -53,20 +71,30 @@ public class RepairBackBillServiceImpl implements RepairBackBillService {
@Autowired
private
TaskService
taskService
;
@Resource
private
BlockService
blockService
;
@Resource
private
BlockDataService
blockDataService
;
@Resource
private
RepairBillService
repairBillService
;
@Override
public
RepairBackBill
save
(
RepairBackBill
deviceRepairBackBillEntity
)
{
RepairBackBill
repairBackBill
=
deviceRepairBackBillDao
.
save
(
deviceRepairBackBillEntity
);
CompletableFuture
.
runAsync
(()->{
try
{
Thread
.
sleep
(
2000
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
RepairBackBill
repairBackBill1
=
getOne
(
repairBackBill
.
getId
());
BcHash
bcText
=
blockChainUtil
.
sendHash
(
1000
,
JacksonUtil
.
toJSon
(
repairBackBill1
));
String
recordId
=
bcText
.
getData
().
getRecordID
();
repairBackBill1
.
setRecordId
(
recordId
);
deviceRepairBackBillDao
.
save
(
repairBackBill1
);
// try {
// Thread.sleep(2000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
// RepairBackBill repairBackBill1 = getOne(repairBackBill.getId());
// BcHash bcText = blockChainUtil.sendHash(1000, JacksonUtil.toJSon(repairBackBill1));
// String recordId = bcText.getData().getRecordID();
// repairBackBill1.setRecordId(recordId);
// deviceRepairBackBillDao.save(repairBackBill1);
sendText
(
repairBackBill
.
getId
());
});
return
repairBackBill
;
}
...
...
@@ -84,7 +112,10 @@ public class RepairBackBillServiceImpl implements RepairBackBillService {
@Override
public
RepairBackBill
update
(
RepairBackBill
deviceRepairBackBillEntity
)
{
RepairBackBill
repairBackBill
=
deviceRepairBackBillDao
.
save
(
deviceRepairBackBillEntity
);
CompletableFuture
.
runAsync
(()->
blockChainUtil
.
appendHash
(
JacksonUtil
.
toJSon
(
repairBackBill
),
repairBackBill
.
getRecordId
()),
TaskBeanConfig
.
getThreadPoolTaskScheduler
());
// CompletableFuture.runAsync(()->blockChainUtil.appendHash(JacksonUtil.toJSon(repairBackBill),repairBackBill.getRecordId()), TaskBeanConfig.getThreadPoolTaskScheduler());
CompletableFuture
.
runAsync
(()->{
sendText
(
repairBackBill
.
getId
());
});
return
repairBackBill
;
}
...
...
@@ -129,6 +160,89 @@ public class RepairBackBillServiceImpl implements RepairBackBillService {
return
map
;
}
@Override
public
boolean
checkTrueData
(
Integer
billId
)
{
BlockTraceabilityParsing
blockTraceabilityParsing
=
traceabilityParsing
(
billId
);
return
blockDataService
.
contrast
(
blockTraceabilityParsing
);
}
@Override
public
BlockTraceabilityParsing
traceabilityParsing
(
Integer
billId
)
{
BlockData
billTypeAndBillId
=
blockDataService
.
findBillTypeAndBillId
(
BusinessEnum
.
REPAIR_BACK
.
id
,
billId
);
BcRecord
bcRecord
=
blockService
.
fetchRecord
(
BlockBusinessEnum
.
REPAIR_BACK
.
subCode
,
billTypeAndBillId
.
getRecordID
());
RepairBackBill
repairBackBill
=
queryRepairBackBill
(
billId
);
RepairBackBill
repairBackBill1
=
JSON
.
parseObject
(
bcRecord
.
getData
().
getContent
(),
RepairBackBill
.
class
);
BlockTraceabilityParsing
blockTraceabilityParsing
=
bcRecord
.
getData
().
toBlockTraceabilityParsing
();
RepairBill
repairBill
=
repairBillService
.
getOne
(
repairBackBill
.
getDeviceRepairBillId
());
blockTraceabilityParsing
.
setBusinessTraceabilityParsingData
(
TraceabilityParsingData
.
builder
()
.
billTypeName
(
"维修退回"
)
//业务名称
.
applyNumber
(
repairBackBill
.
getApplyNumber
())
//申请文号
.
replayNumber
(
repairBackBill
.
getReplayNumber
())
//批复文号
// .fileMd5(deviceDecommissioningDetail.getFileMd5())
.
carrierIds
(
StringSplitUtil
.
stringListToString
(
repairBackBill
.
getScripts
().
stream
().
map
(
ScriptSaveVo:
:
getSeqNumber
).
collect
(
Collectors
.
toList
())))
//序列号信息
.
initiateUnitName
(
repairBackBill
.
getSendUnit
())
//发起单位
.
receiveUnitName
(
repairBackBill
.
getReceiveUnit
())
//接收单位
.
documentNo
(
repairBill
.
getDocNum
())
//单据号
.
operationTime
(
DateUtil
.
getLocalDateTime
(
repairBackBill
.
getSendTime
()))
//发起时间
.
operatorUserName
(
operatorName
(
repairBackBill
))
//相关人员
.
build
());
RepairBill
repairBill1
=
repairBillService
.
getOne
(
repairBackBill1
.
getDeviceRepairBillId
());
blockTraceabilityParsing
.
setBlockTraceabilityParsingData
(
TraceabilityParsingData
.
builder
()
.
billTypeName
(
"维修退回"
)
.
applyNumber
(
repairBackBill1
.
getApplyNumber
())
.
replayNumber
(
repairBackBill1
.
getReplayNumber
())
// .fileMd5(deviceDecommissioningDetail.getFileMd5())
.
carrierIds
(
StringSplitUtil
.
stringListToString
(
repairBackBill1
.
getScripts
().
stream
().
map
(
ScriptSaveVo:
:
getSeqNumber
).
collect
(
Collectors
.
toList
())))
.
initiateUnitName
(
repairBackBill1
.
getSendUnit
())
.
receiveUnitName
(
repairBackBill1
.
getReceiveUnit
())
.
documentNo
(
repairBill1
.
getDocNum
())
.
operationTime
(
DateUtil
.
getLocalDateTime
(
repairBackBill1
.
getSendTime
()))
.
operatorUserName
(
operatorName
(
repairBackBill1
))
.
build
());
blockTraceabilityParsing
.
setBlockData
(
repairBackBill1
);
blockTraceabilityParsing
.
setCurrentData
(
repairBackBill
);
return
blockTraceabilityParsing
;
}
/**
* 文本上链接口
* @param billId 业务id
*/
private
void
sendText
(
Integer
billId
){
RepairBackBill
repairBackBill
=
queryRepairBackBill
(
billId
);
// 区块业务状态码,上链json数据,业务类型,业务id,发起单位
blockService
.
sendText
(
BlockBusinessEnum
.
REPAIR_BACK
.
subCode
,
JacksonUtil
.
toJSon
(
repairBackBill
),
BusinessEnum
.
REPAIR_BACK
.
id
,
billId
,
repairBackBill
.
getSendUnit
());
}
/**
* 拼写相关人员字符
*/
private
String
operatorName
(
RepairBackBill
repairBackBill
)
{
StringBuffer
buf
=
new
StringBuffer
();
buf
.
append
(
repairBackBill
.
getStartUserA
())
.
append
(
","
)
.
append
(
repairBackBill
.
getStartUserB
())
.
append
(
","
)
.
append
(
repairBackBill
.
getReceiveUserA
())
.
append
(
","
)
.
append
(
repairBackBill
.
getReceiveUserB
());
return
buf
.
toString
();
}
private
RepairBackBill
queryRepairBackBill
(
Integer
billId
){
RepairBackBill
repairBackBill
=
deviceRepairBackBillDao
.
findById
(
billId
).
get
();
repairBackBill
.
setSendFileList
(
FilesUtil
.
stringFileToList
(
repairBackBill
.
getSendFiles
()));
repairBackBill
.
setReceiveFileList
(
FilesUtil
.
stringFileToList
(
repairBackBill
.
getReceiveFiles
()));
repairBackBill
.
setScripts
(
JacksonUtil
.
readValue
(
repairBackBill
.
getScriptJson
(),
new
TypeReference
<
List
<
ScriptSaveVo
>>()
{
}));
return
repairBackBill
;
}
private
Specification
<
RepairBackBill
>
getSelectSpecification
(
RepairBillSelectVo
deviceRepairBillSelectVo
)
{
PredicateBuilder
<
RepairBackBill
>
predicateBuilder
=
Specifications
.
and
();
PredicateBuilder
<
RepairBackBill
>
predicateBuilder1
=
Specifications
.
or
();
...
...
dev-repair/src/main/java/com/tykj/dev/device/repair/service/impl/RepairSendBillServiceImpl.java
浏览文件 @
cdbc04e1
package
com
.
tykj
.
dev
.
device
.
repair
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.github.wenhao.jpa.PredicateBuilder
;
import
com.github.wenhao.jpa.Specifications
;
import
com.tykj.dev.blockcha.subject.entity.BcHash
;
import
com.tykj.dev.blockcha.subject.service.BlockChainUtil
;
import
com.tykj.dev.config.TaskBeanConfig
;
import
com.tykj.dev.config.base.FileName
;
import
com.tykj.dev.device.block.entity.BlockData
;
import
com.tykj.dev.device.block.entity.bc.BcRecord
;
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.file.entity.FileRet
;
import
com.tykj.dev.device.file.service.FilesUtil
;
import
com.tykj.dev.device.library.subject.vo.ScriptSaveVo
;
import
com.tykj.dev.device.repair.repository.RepairSendBillDao
;
import
com.tykj.dev.device.repair.service.RepairBillService
;
import
com.tykj.dev.device.repair.service.RepairSendBillService
;
import
com.tykj.dev.device.repair.subject.domin.RepairBill
;
import
com.tykj.dev.device.repair.subject.domin.RepairSendBill
;
import
com.tykj.dev.device.repair.subject.vo.RepairBillSelectVo
;
import
com.tykj.dev.device.task.service.TaskService
;
import
com.tykj.dev.device.user.subject.service.UserPublicService
;
import
com.tykj.dev.misc.base.BlockBusinessEnum
;
import
com.tykj.dev.misc.base.BusinessEnum
;
import
com.tykj.dev.misc.utils.DateUtil
;
import
com.tykj.dev.misc.utils.JacksonUtil
;
import
com.tykj.dev.misc.utils.StringSplitUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
...
...
@@ -22,6 +37,7 @@ import org.springframework.data.jpa.domain.Specification;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
javax.persistence.Transient
;
import
java.lang.reflect.Field
;
import
java.util.HashMap
;
...
...
@@ -29,6 +45,7 @@ import java.util.List;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.stream.Collectors
;
/**
* @author dengdiyi
...
...
@@ -48,15 +65,25 @@ public class RepairSendBillServiceImpl implements RepairSendBillService {
@Autowired
private
TaskService
taskService
;
@Resource
private
BlockService
blockService
;
@Resource
private
BlockDataService
blockDataService
;
@Resource
private
RepairBillService
repairBillService
;
@Override
public
RepairSendBill
addEntity
(
RepairSendBill
deviceRepairSendBillEntity
)
{
RepairSendBill
repairSendBill
=
deviceRepairSendBillDao
.
save
(
deviceRepairSendBillEntity
);
CompletableFuture
.
runAsync
(()->{
RepairSendBill
repairSendBill1
=
getOne
(
repairSendBill
.
getId
());
BcHash
bcText
=
blockChainUtil
.
sendHash
(
1000
,
JacksonUtil
.
toJSon
(
repairSendBill1
));
String
recordId
=
bcText
.
getData
().
getRecordID
();
repairSendBill1
.
setRecordId
(
recordId
);
deviceRepairSendBillDao
.
save
(
repairSendBill1
);
// RepairSendBill repairSendBill1 = getOne(repairSendBill.getId());
// BcHash bcText = blockChainUtil.sendHash(1000, JacksonUtil.toJSon(repairSendBill1));
// String recordId = bcText.getData().getRecordID();
// repairSendBill1.setRecordId(recordId);
// deviceRepairSendBillDao.save(repairSendBill1);
sendText
(
repairSendBill
.
getId
());
},
TaskBeanConfig
.
getThreadPoolTaskScheduler
());
return
repairSendBill
;
}
...
...
@@ -96,7 +123,10 @@ public class RepairSendBillServiceImpl implements RepairSendBillService {
@Override
public
RepairSendBill
update
(
RepairSendBill
deviceRepairSendBillEntity
)
{
RepairSendBill
repairSendBill
=
deviceRepairSendBillDao
.
save
(
deviceRepairSendBillEntity
);
CompletableFuture
.
runAsync
(()->
blockChainUtil
.
appendHash
(
JacksonUtil
.
toJSon
(
repairSendBill
),
deviceRepairSendBillEntity
.
getRecordId
()),
TaskBeanConfig
.
getThreadPoolTaskScheduler
());
// CompletableFuture.runAsync(()->blockChainUtil.appendHash(JacksonUtil.toJSon(repairSendBill),deviceRepairSendBillEntity.getRecordId()),TaskBeanConfig.getThreadPoolTaskScheduler());
CompletableFuture
.
runAsync
(()->{
sendText
(
repairSendBill
.
getId
());
},
TaskBeanConfig
.
getThreadPoolTaskScheduler
());
return
repairSendBill
;
}
...
...
@@ -122,6 +152,89 @@ public class RepairSendBillServiceImpl implements RepairSendBillService {
return
deviceRepairSendBillDao
.
findByDeviceRepairBillId
(
repairId
);
}
@Override
public
boolean
checkTrueData
(
Integer
billId
)
{
BlockTraceabilityParsing
blockTraceabilityParsing
=
traceabilityParsing
(
billId
);
return
blockDataService
.
contrast
(
blockTraceabilityParsing
);
}
@Override
public
BlockTraceabilityParsing
traceabilityParsing
(
Integer
billId
)
{
BlockData
billTypeAndBillId
=
blockDataService
.
findBillTypeAndBillId
(
BusinessEnum
.
REPAIR
.
id
,
billId
);
BcRecord
bcRecord
=
blockService
.
fetchRecord
(
BlockBusinessEnum
.
ALLOT
.
subCode
,
billTypeAndBillId
.
getRecordID
());
RepairSendBill
repairSendBill
=
queryAllotBill
(
billId
);
RepairSendBill
repairSendBill1
=
JSON
.
parseObject
(
bcRecord
.
getData
().
getContent
(),
RepairSendBill
.
class
);
BlockTraceabilityParsing
blockTraceabilityParsing
=
bcRecord
.
getData
().
toBlockTraceabilityParsing
();
RepairBill
repairBill
=
repairBillService
.
getOne
(
repairSendBill
.
getDeviceRepairBillId
());
blockTraceabilityParsing
.
setBusinessTraceabilityParsingData
(
TraceabilityParsingData
.
builder
()
.
billTypeName
(
"维修"
)
//业务名称
.
applyNumber
(
repairSendBill
.
getApplyNumber
())
//申请文号
.
replayNumber
(
repairSendBill
.
getReplayNumber
())
//批复文号
// .fileMd5(deviceDecommissioningDetail.getFileMd5())
.
carrierIds
(
StringSplitUtil
.
stringListToString
(
repairSendBill
.
getScripts
().
stream
().
map
(
ScriptSaveVo:
:
getSeqNumber
).
collect
(
Collectors
.
toList
())))
//序列号信息
.
initiateUnitName
(
repairSendBill
.
getSendUnit
())
//发起单位
.
receiveUnitName
(
repairSendBill
.
getReceiveUnit
())
//接收单位
.
documentNo
(
repairBill
.
getDocNum
())
//单据号
.
operationTime
(
DateUtil
.
getLocalDateTime
(
repairSendBill
.
getSendTime
()))
//发起时间
.
operatorUserName
(
operatorName
(
repairSendBill
))
//相关人员
.
build
());
RepairBill
repairBill1
=
repairBillService
.
getOne
(
repairSendBill1
.
getDeviceRepairBillId
());
blockTraceabilityParsing
.
setBlockTraceabilityParsingData
(
TraceabilityParsingData
.
builder
()
.
billTypeName
(
"维修"
)
.
applyNumber
(
repairSendBill1
.
getApplyNumber
())
.
replayNumber
(
repairSendBill1
.
getReplayNumber
())
// .fileMd5(deviceDecommissioningDetail.getFileMd5())
.
carrierIds
(
StringSplitUtil
.
stringListToString
(
repairSendBill1
.
getScripts
().
stream
().
map
(
ScriptSaveVo:
:
getSeqNumber
).
collect
(
Collectors
.
toList
())))
.
initiateUnitName
(
repairSendBill1
.
getSendUnit
())
.
receiveUnitName
(
repairSendBill1
.
getReceiveUnit
())
.
documentNo
(
repairBill1
.
getDocNum
())
.
operationTime
(
DateUtil
.
getLocalDateTime
(
repairSendBill1
.
getSendTime
()))
.
operatorUserName
(
operatorName
(
repairSendBill1
))
.
build
());
blockTraceabilityParsing
.
setBlockData
(
repairSendBill1
);
blockTraceabilityParsing
.
setCurrentData
(
repairSendBill
);
return
blockTraceabilityParsing
;
}
/**
* 文本上链接口
* @param billId 业务id
*/
private
void
sendText
(
Integer
billId
){
RepairSendBill
repairSendBill
=
queryAllotBill
(
billId
);
// 区块业务状态码,上链json数据,业务类型,业务id,发起单位
blockService
.
sendText
(
BlockBusinessEnum
.
ALLOT
.
subCode
,
JacksonUtil
.
toJSon
(
repairSendBill
),
BusinessEnum
.
REPAIR
.
id
,
billId
,
repairSendBill
.
getSendUnit
());
}
private
RepairSendBill
queryAllotBill
(
Integer
billId
){
RepairSendBill
repairSendBill
=
deviceRepairSendBillDao
.
findById
(
billId
).
get
();
repairSendBill
.
setSendFileList
(
FilesUtil
.
stringFileToList
(
repairSendBill
.
getSendFiles
()));
repairSendBill
.
setReceiveFileList
(
FilesUtil
.
stringFileToList
(
repairSendBill
.
getReceiveFiles
()));
repairSendBill
.
setScripts
(
JacksonUtil
.
readValue
(
repairSendBill
.
getScriptJson
(),
new
TypeReference
<
List
<
ScriptSaveVo
>>()
{
}));
return
repairSendBill
;
}
/**
* 拼写相关人员字符
*/
private
String
operatorName
(
RepairSendBill
repairSendBill
)
{
StringBuffer
buf
=
new
StringBuffer
();
buf
.
append
(
repairSendBill
.
getStartUserA
())
.
append
(
","
)
.
append
(
repairSendBill
.
getStartUserB
())
.
append
(
","
)
.
append
(
repairSendBill
.
getRepairUserA
())
.
append
(
","
)
.
append
(
repairSendBill
.
getRepairUserB
());
return
buf
.
toString
();
}
private
Specification
<
RepairSendBill
>
getSelectSpecification
(
RepairBillSelectVo
deviceRepairBillSelectVo
)
{
PredicateBuilder
<
RepairSendBill
>
predicateBuilder
=
Specifications
.
and
();
...
...
dev-storage/pom.xml
浏览文件 @
cdbc04e1
...
...
@@ -44,6 +44,11 @@
<groupId>
com.tykj
</groupId>
<artifactId>
dev-apply
</artifactId>
</dependency>
<dependency>
<groupId>
com.tykj
</groupId>
<artifactId>
dev-block
</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
dev-storage/src/main/java/com/tykj/dev/device/storage/controller/StorageBlockController.java
0 → 100644
浏览文件 @
cdbc04e1
package
com
.
tykj
.
dev
.
device
.
storage
.
controller
;
import
com.tykj.dev.config.swagger.AutoDocument
;
import
com.tykj.dev.device.storage.service.StorageBillService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
/**
* @author zhoushaopan
*/
@RestController
@RequestMapping
(
value
=
"/storageBlock"
)
@AutoDocument
@Api
(
tags
=
"装备入库上链模块"
,
description
=
"装备入库上链模块"
)
@Slf4j
public
class
StorageBlockController
{
@Resource
private
StorageBillService
storageBillService
;
@GetMapping
(
value
=
"checkTrueData/{billId}"
)
@ApiOperation
(
value
=
"根据入库单ID进行对应业务的验证"
,
notes
=
"根据入库单ID进行对应业务的验证"
)
public
ResponseEntity
backCheckTrueData
(
@PathVariable
Integer
billId
){
return
ResponseEntity
.
ok
(
storageBillService
.
checkTrueData
(
billId
));
}
@GetMapping
(
value
=
"traceabilityParsing/{billId}"
)
@ApiOperation
(
value
=
"根据入库单ID进行对应业务的溯源"
,
notes
=
"根据入库单ID进行对应业务的溯源"
)
public
ResponseEntity
backTraceabilityParsing
(
@PathVariable
Integer
billId
){
return
ResponseEntity
.
ok
(
storageBillService
.
traceabilityParsing
(
billId
));
}
}
dev-storage/src/main/java/com/tykj/dev/device/storage/service/StorageBillService.java
浏览文件 @
cdbc04e1
package
com
.
tykj
.
dev
.
device
.
storage
.
service
;
import
com.tykj.dev.device.block.entity.vo.BlockTraceabilityParsing
;
import
com.tykj.dev.device.file.entity.FileRet
;
import
com.tykj.dev.device.storage.subject.domin.StorageBill
;
import
org.springframework.data.domain.Page
;
...
...
@@ -31,4 +32,18 @@ public interface StorageBillService {
void
delete
(
Integer
id
);
Map
<
String
,
List
<
FileRet
>>
getFileList
(
Integer
taskId
);
/**
* 验证接口
* @param billId 业务id
* @return 正确与否
*/
boolean
checkTrueData
(
Integer
billId
);
/**
* 溯源接口
* @param billId 业务id
* @return 溯源信息实体
*/
BlockTraceabilityParsing
traceabilityParsing
(
Integer
billId
);
}
dev-storage/src/main/java/com/tykj/dev/device/storage/service/impl/StorageBillServiceImpl.java
浏览文件 @
cdbc04e1
package
com
.
tykj
.
dev
.
device
.
storage
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.tykj.dev.blockcha.subject.entity.BcHash
;
import
com.tykj.dev.blockcha.subject.service.BlockChainUtil
;
import
com.tykj.dev.config.TaskBeanConfig
;
import
com.tykj.dev.config.base.FileName
;
import
com.tykj.dev.device.allot.subject.domin.AllotBill
;
import
com.tykj.dev.device.block.entity.BlockData
;
import
com.tykj.dev.device.block.entity.bc.BcRecord
;
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.file.entity.FileRet
;
import
com.tykj.dev.device.file.service.FilesUtil
;
import
com.tykj.dev.device.library.subject.vo.ScriptSaveVo
;
import
com.tykj.dev.device.repair.subject.domin.RepairBackBill
;
import
com.tykj.dev.device.repair.subject.domin.RepairBill
;
import
com.tykj.dev.device.storage.repository.StorageBillDao
;
import
com.tykj.dev.device.storage.service.StorageBillService
;
import
com.tykj.dev.device.storage.subject.domin.StorageBill
;
import
com.tykj.dev.device.storage.subject.vo.StorageBillDetail
;
import
com.tykj.dev.device.task.service.TaskService
;
import
com.tykj.dev.misc.base.BlockBusinessEnum
;
import
com.tykj.dev.misc.base.BusinessEnum
;
import
com.tykj.dev.misc.utils.DateUtil
;
import
com.tykj.dev.misc.utils.JacksonUtil
;
import
com.tykj.dev.misc.utils.StringSplitUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
javax.annotation.Resource
;
import
java.util.*
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.stream.Collectors
;
/**
* @author dengdiyi
...
...
@@ -38,21 +53,28 @@ public class StorageBillServiceImpl implements StorageBillService {
@Autowired
private
TaskService
taskService
;
@Resource
private
BlockDataService
blockDataService
;
@Resource
private
BlockService
blockService
;
@Override
public
StorageBill
addEntity
(
StorageBill
storageBillEntity
)
{
StorageBill
storageBill
=
storageBillDao
.
save
(
storageBillEntity
);
CompletableFuture
.
runAsync
(()->{
try
{
Thread
.
sleep
(
2000
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
StorageBill
storageBill1
=
getOne
(
storageBill
.
getId
());
BcHash
bcText
=
blockChainUtil
.
sendHash
(
1000
,
JacksonUtil
.
toJSon
(
storageBill1
));
String
recordId
=
bcText
.
getData
().
getRecordID
();
storageBill1
.
setRecordId
(
recordId
);
storageBillDao
.
save
(
storageBill1
);
},
TaskBeanConfig
.
getThreadPoolTaskScheduler
());
// CompletableFuture.runAsync(()->{
// try {
// Thread.sleep(2000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
// StorageBill storageBill1 = getOne(storageBill.getId());
// BcHash bcText = blockChainUtil.sendHash(1000, JacksonUtil.toJSon(storageBill1));
// String recordId = bcText.getData().getRecordID();
// storageBill1.setRecordId(recordId);
// storageBillDao.save(storageBill1);
// }, TaskBeanConfig.getThreadPoolTaskScheduler());
CompletableFuture
.
runAsync
(()->
sendText
(
storageBill
.
getId
()));
return
storageBill
;
}
...
...
@@ -83,7 +105,8 @@ public class StorageBillServiceImpl implements StorageBillService {
@Override
public
StorageBill
update
(
StorageBill
storageBillEntity
)
{
StorageBill
storageBill
=
storageBillDao
.
save
(
storageBillEntity
);
CompletableFuture
.
runAsync
(()->
blockChainUtil
.
appendHash
(
JacksonUtil
.
toJSon
(
storageBill
),
storageBill
.
getRecordId
()),
TaskBeanConfig
.
getThreadPoolTaskScheduler
());
// CompletableFuture.runAsync(()->blockChainUtil.appendHash(JacksonUtil.toJSon(storageBill),storageBill.getRecordId()),TaskBeanConfig.getThreadPoolTaskScheduler());
CompletableFuture
.
runAsync
(()->
sendText
(
storageBill
.
getId
()));
return
storageBill
;
}
...
...
@@ -115,4 +138,105 @@ public class StorageBillServiceImpl implements StorageBillService {
map
.
put
(
FileName
.
ALLOT
.
name
,
FilesUtil
.
stringFileToList
(
storageBill
.
getAllotFiles
()));
return
map
;
}
@Override
public
boolean
checkTrueData
(
Integer
billId
)
{
BlockTraceabilityParsing
blockTraceabilityParsing
=
traceabilityParsing
(
billId
);
return
blockDataService
.
contrast
(
blockTraceabilityParsing
);
}
@Override
public
BlockTraceabilityParsing
traceabilityParsing
(
Integer
billId
)
{
BlockData
billTypeAndBillId
=
blockDataService
.
findBillTypeAndBillId
(
BusinessEnum
.
STORAGE
.
id
,
billId
);
//区块链数据
BcRecord
bcRecord
=
blockService
.
fetchRecord
(
BlockBusinessEnum
.
STORAGE
.
subCode
,
billTypeAndBillId
.
getRecordID
());
BlockTraceabilityParsing
blockTraceabilityParsing
=
bcRecord
.
getData
().
toBlockTraceabilityParsing
();
StorageBill
storageBill
=
queryStorageBill
(
billId
);
//当前业务数据
TraceabilityParsingData
traceabilityParsingData
=
new
TraceabilityParsingData
();
traceabilityParsingData
.
setBillTypeName
(
"入库"
);
traceabilityParsingData
.
setApplyNumber
(
storageBill
.
getApplyNumber
());
traceabilityParsingData
.
setReplayNumber
(
storageBill
.
getReplayNumber
());
traceabilityParsingData
.
setCarrierIds
(
getSeqNumber
(
storageBill
));
traceabilityParsingData
.
setInitiateUnitName
(
storageBill
.
getSendUnit
());
traceabilityParsingData
.
setReceiveUnitName
(
"浙江省机要局"
);
traceabilityParsingData
.
setOperationTime
(
DateUtil
.
getLocalDateTime
(
storageBill
.
getSendTime
()));
traceabilityParsingData
.
setOperatorUserName
(
operatorName
(
storageBill
));
blockTraceabilityParsing
.
setBusinessTraceabilityParsingData
(
traceabilityParsingData
);
StorageBill
storageBill1
=
JSON
.
parseObject
(
bcRecord
.
getData
().
getContent
(),
StorageBill
.
class
);
//区块链的数据
BlockTraceabilityParsing
blockTraceabilityParsing1
=
new
BlockTraceabilityParsing
();
TraceabilityParsingData
traceabilityParsingData1
=
new
TraceabilityParsingData
();
traceabilityParsingData
.
setBillTypeName
(
"入库"
);
traceabilityParsingData
.
setApplyNumber
(
storageBill1
.
getApplyNumber
());
traceabilityParsingData
.
setReplayNumber
(
storageBill1
.
getReplayNumber
());
traceabilityParsingData
.
setCarrierIds
(
getSeqNumber
(
storageBill1
));
traceabilityParsingData
.
setInitiateUnitName
(
storageBill1
.
getSendUnit
());
traceabilityParsingData
.
setReceiveUnitName
(
"浙江省机要局"
);
traceabilityParsingData
.
setOperationTime
(
DateUtil
.
getLocalDateTime
(
storageBill1
.
getSendTime
()));
traceabilityParsingData
.
setOperatorUserName
(
operatorName
(
storageBill1
));
blockTraceabilityParsing1
.
setBlockTraceabilityParsingData
(
traceabilityParsingData1
);
blockTraceabilityParsing
.
setBlockData
(
storageBill1
);
blockTraceabilityParsing
.
setCurrentData
(
storageBill
);
return
blockTraceabilityParsing
;
}
/**
* 文本上链接口
* @param billId 业务id
*/
private
void
sendText
(
Integer
billId
){
StorageBill
storageBill
=
queryStorageBill
(
billId
);
// 区块业务状态码,上链json数据,业务类型,业务id,发起单位
blockService
.
sendText
(
BlockBusinessEnum
.
REPAIR_BACK
.
subCode
,
JacksonUtil
.
toJSon
(
storageBill
),
BusinessEnum
.
STORAGE
.
id
,
billId
,
storageBill
.
getSendUnit
());
}
/**
* 拼写相关人员字符
*/
private
String
operatorName
(
StorageBill
storageBill
)
{
StringBuffer
buf
=
new
StringBuffer
();
buf
.
append
(
storageBill
.
getSendUserId
())
.
append
(
","
)
.
append
(
storageBill
.
getReceiveUserA
())
.
append
(
","
)
.
append
(
storageBill
.
getReceiveUserB
());
return
buf
.
toString
();
}
private
StorageBill
queryStorageBill
(
Integer
billId
){
StorageBill
storageBill
=
storageBillDao
.
findById
(
billId
).
get
();
storageBill
.
setReplyFileList
(
FilesUtil
.
stringFileToList
(
storageBill
.
getReplyFiles
()));
storageBill
.
setAllotFileList
(
FilesUtil
.
stringFileToList
(
storageBill
.
getAllotFiles
()));
storageBill
.
setApplyFileList
(
FilesUtil
.
stringFileToList
(
storageBill
.
getApplyFiles
()));
storageBill
.
setOtherFileList
(
FilesUtil
.
stringFileToList
(
storageBill
.
getOtherFiles
()));
return
storageBill
;
}
/**
* 获取设备序列号区间 以逗号分隔
* @param storageBill
* @return
*/
private
String
getSeqNumber
(
StorageBill
storageBill
){
List
<
String
>
arrayList
=
new
ArrayList
<>();
String
packingDetail
=
storageBill
.
getPackingDetail
();
if
(
packingDetail
!=
null
){
List
<
StorageBillDetail
>
storageBillDetails
=
JacksonUtil
.
readValue
(
storageBill
.
getPackingDetail
(),
new
TypeReference
<
List
<
StorageBillDetail
>>()
{
});
if
(
storageBillDetails
!=
null
&&
storageBillDetails
.
size
()
>
0
){
//取出区间号
storageBillDetails
.
forEach
(
storageBillDetail
->
{
arrayList
.
add
(
storageBillDetail
.
getSeqInterval
());
});
}
return
String
.
join
(
","
,
arrayList
);
}
return
""
;
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论