Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
device-back
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
1
议题
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Matrix
device-back
Commits
85450c1d
提交
85450c1d
authored
2月 03, 2021
作者:
Matrix
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[核查模块] 修复了两级核查与三级核查相关的BUG
上级
1c8a5e4f
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
199 行增加
和
105 行删除
+199
-105
LogType.java
dev-config/src/main/java/com/tykj/dev/config/LogType.java
+2
-0
DeviceCheckController.java
...device/confirmcheck/controller/DeviceCheckController.java
+118
-63
DeviceCheckStat.java
...ev/device/confirmcheck/entity/domain/DeviceCheckStat.java
+2
-2
CheckDeviceStatVo.java
.../dev/device/confirmcheck/entity/vo/CheckDeviceStatVo.java
+12
-9
CheckStatVo.java
...m/tykj/dev/device/confirmcheck/entity/vo/CheckStatVo.java
+4
-3
ConfirmCheckServiceImpl.java
...ce/confirmcheck/service/impl/ConfirmCheckServiceImpl.java
+7
-7
TaskService.java
...in/java/com/tykj/dev/device/task/service/TaskService.java
+10
-0
TaskServiceImpl.java
...om/tykj/dev/device/task/service/impl/TaskServiceImpl.java
+44
-21
没有找到文件。
dev-config/src/main/java/com/tykj/dev/config/LogType.java
浏览文件 @
85450c1d
...
@@ -150,6 +150,8 @@ public enum LogType {
...
@@ -150,6 +150,8 @@ public enum LogType {
CONFIRM_CHECK_EXAM_DETAIL_3
(
419
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_EXAM_DETAIL_1
.
id
,
CHECK_EXAM_DETAIL_0
.
id
,
"B岗审核失败,跳回A岗人员操作"
),
CONFIRM_CHECK_EXAM_DETAIL_3
(
419
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_EXAM_DETAIL_1
.
id
,
CHECK_EXAM_DETAIL_0
.
id
,
"B岗审核失败,跳回A岗人员操作"
),
CONFIRM_CHECK_EXAM_STAT_3
(
420
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_EXAM_STAT_0
.
id
,
END
.
id
,
"检查统计任务数据已确认完毕,任务完结"
),
ALLOT_BACK_1
(
57
,
ALLOT_BACK
.
id
,
ORIGIN_STATUS
.
id
,
ALLOT_BACKING
.
id
,
"发起装备退回"
),
ALLOT_BACK_1
(
57
,
ALLOT_BACK
.
id
,
ORIGIN_STATUS
.
id
,
ALLOT_BACKING
.
id
,
"发起装备退回"
),
ALLOT_BACK_2
(
58
,
ALLOT_BACK
.
id
,
ALLOT_BACKING
.
id
,
END
.
id
,
"退回装备接收成功"
),
ALLOT_BACK_2
(
58
,
ALLOT_BACK
.
id
,
ALLOT_BACKING
.
id
,
END
.
id
,
"退回装备接收成功"
),
...
...
dev-confirmcheck/src/main/java/com/tykj/dev/device/confirmcheck/controller/DeviceCheckController.java
浏览文件 @
85450c1d
package
com
.
tykj
.
dev
.
device
.
confirmcheck
.
controller
;
package
com
.
tykj
.
dev
.
device
.
confirmcheck
.
controller
;
import
com.github.wenhao.jpa.Specifications
;
import
com.google.common.collect.ImmutableMap
;
import
com.google.common.collect.ImmutableMap
;
import
com.tykj.dev.config.GlobalMap
;
import
com.tykj.dev.config.GlobalMap
;
import
com.tykj.dev.config.swagger.AutoDocument
;
import
com.tykj.dev.config.swagger.AutoDocument
;
...
@@ -39,11 +40,13 @@ import io.swagger.annotations.ApiParam;
...
@@ -39,11 +40,13 @@ import io.swagger.annotations.ApiParam;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.jpa.domain.Specification
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
java.time.LocalDate
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.function.Function
;
...
@@ -174,14 +177,13 @@ public class DeviceCheckController {
...
@@ -174,14 +177,13 @@ public class DeviceCheckController {
@PostMapping
(
"/auto"
)
@PostMapping
(
"/auto"
)
public
ResultObj
<
Map
<
String
,
List
<
Integer
>>>
startAutoCheck
()
{
public
ResultObj
<
Map
<
String
,
List
<
Integer
>>>
startAutoCheck
()
{
Map
<
String
,
List
<
Integer
>>
resultIds
=
ccService
.
autoCheck
();
Map
<
String
,
List
<
Integer
>>
resultIds
=
ccService
.
autoCheck
();
myWebSocket
.
sendMessage1
();
return
new
ResultObj
<>(
resultIds
,
"自动核查任务发起成功"
);
return
new
ResultObj
<>(
resultIds
,
"自动核查任务发起成功"
);
}
}
@ApiOperation
(
value
=
"发起核查"
,
notes
=
"对指定地区发起核查任务"
)
@ApiOperation
(
value
=
"发起核查"
,
notes
=
"对指定地区发起核查任务"
)
@PostMapping
(
"/startCheck"
)
@PostMapping
(
"/startCheck"
)
public
ResponseEntity
startCheck
Check
(
@RequestBody
CheckCheckVo
ccVO
)
{
public
ResponseEntity
startCheck
(
@RequestBody
CheckCheckVo
ccVO
)
{
//构建省的统计账单
//构建省的统计账单
Integer
startUnitId
=
ccVO
.
getUnitId
();
Integer
startUnitId
=
ccVO
.
getUnitId
();
Units
startUnit
=
unitsRepo
.
findById
(
startUnitId
).
get
();
Units
startUnit
=
unitsRepo
.
findById
(
startUnitId
).
get
();
...
@@ -189,7 +191,7 @@ public class DeviceCheckController {
...
@@ -189,7 +191,7 @@ public class DeviceCheckController {
List
<
String
>
checkedUnitNames
=
checkedUnits
.
stream
().
map
(
Units:
:
getName
).
collect
(
toList
());
List
<
String
>
checkedUnitNames
=
checkedUnits
.
stream
().
map
(
Units:
:
getName
).
collect
(
toList
());
log
.
info
(
"[核查模块]发起核查,发起单位为{},被查单位为{}"
,
startUnit
.
getName
(),
checkedUnitNames
);
log
.
info
(
"[核查模块]发起核查,发起单位为{},被查单位为{}"
,
startUnit
.
getName
(),
checkedUnitNames
);
DeviceCheckStat
provinceCheckStat
=
initStatData
(
ccVO
.
getTitle
(),
ccVO
.
getRemark
(),
0
,
0
,
startUnit
.
getName
(),
checkedUnits
);
DeviceCheckStat
provinceCheckStat
=
initStatData
(
ccVO
.
getTitle
(),
ccVO
.
getRemark
(),
0
,
0
,
startUnit
.
getName
(),
checkedUnits
,
ccVO
.
getEndTime
().
atStartOfDay
()
);
Integer
statId
=
statRepo
.
save
(
provinceCheckStat
).
getId
();
Integer
statId
=
statRepo
.
save
(
provinceCheckStat
).
getId
();
List
<
CheckDeviceStatVo
>
deviceStatVos
=
Arrays
.
stream
(
List
<
CheckDeviceStatVo
>
deviceStatVos
=
Arrays
.
stream
(
Objects
.
requireNonNull
(
JacksonUtil
.
readValue
(
provinceCheckStat
.
getStatInfo
(),
CheckDeviceStatVo
[].
class
)))
Objects
.
requireNonNull
(
JacksonUtil
.
readValue
(
provinceCheckStat
.
getStatInfo
(),
CheckDeviceStatVo
[].
class
)))
...
@@ -208,7 +210,7 @@ public class DeviceCheckController {
...
@@ -208,7 +210,7 @@ public class DeviceCheckController {
for
(
Units
unit
:
checkedUnits
)
{
for
(
Units
unit
:
checkedUnits
)
{
//构建市的统计账单
//构建市的统计账单
String
cityTitle
=
unit
.
getName
()
+
"检查统计"
;
String
cityTitle
=
unit
.
getName
()
+
"检查统计"
;
DeviceCheckStat
cityCheckStat
=
initStatData
(
cityTitle
,
ccVO
.
getRemark
(),
0
,
0
,
unit
.
getName
(),
Collections
.
emptyList
());
DeviceCheckStat
cityCheckStat
=
initStatData
(
cityTitle
,
ccVO
.
getRemark
(),
0
,
0
,
unit
.
getName
(),
Collections
.
emptyList
()
,
ccVO
.
getEndTime
().
atStartOfDay
()
);
Integer
cityStatId
=
statRepo
.
save
(
cityCheckStat
).
getId
();
Integer
cityStatId
=
statRepo
.
save
(
cityCheckStat
).
getId
();
log
.
info
(
"[核查模块] {} 检查统计账单构建完毕,id 为 {}"
,
unit
.
getName
(),
cityStatId
);
log
.
info
(
"[核查模块] {} 检查统计账单构建完毕,id 为 {}"
,
unit
.
getName
(),
cityStatId
);
...
@@ -219,7 +221,6 @@ public class DeviceCheckController {
...
@@ -219,7 +221,6 @@ public class DeviceCheckController {
cityStatTask
.
setCustomInfo
(
"exam"
);
cityStatTask
.
setCustomInfo
(
"exam"
);
taskService
.
start
(
cityStatTask
);
taskService
.
start
(
cityStatTask
);
}
}
myWebSocket
.
sendMessage1
();
return
ResponseEntity
.
ok
(
ImmutableMap
.
of
(
"msg"
,
"发起核查成功"
));
return
ResponseEntity
.
ok
(
ImmutableMap
.
of
(
"msg"
,
"发起核查成功"
));
}
}
...
@@ -233,15 +234,9 @@ public class DeviceCheckController {
...
@@ -233,15 +234,9 @@ public class DeviceCheckController {
*/
*/
@ApiOperation
(
value
=
"发起检查"
,
notes
=
"手动发起核查,需要指定参数"
)
@ApiOperation
(
value
=
"发起检查"
,
notes
=
"手动发起核查,需要指定参数"
)
@PostMapping
(
"/startExam"
)
@PostMapping
(
"/startExam"
)
public
ResponseEntity
<
ResultObj
>
startManualCheck
(
@RequestBody
CheckExamVo
ceVo
)
{
public
ResponseEntity
<
ResultObj
>
startExam
(
@RequestBody
CheckExamVo
ceVo
)
{
//初始化数据结构
List
<
Integer
>
detailIds
=
new
ArrayList
<>();
List
<
Integer
>
detailIds
=
new
ArrayList
<>();
// 1. 添加发起核查bill记录
// DeviceCheckBill billDo = transUtil.checkBillVo2Do(billVo);
// billRepo.save(billDo);
// 构建(设置)发起市的检查统计账单 - 检查统计任务
// 2 构建发起单位的 统计账单 与 统计任务
Integer
startUnitId
=
ceVo
.
getUnitId
();
Integer
startUnitId
=
ceVo
.
getUnitId
();
Units
startUnit
=
unitsRepo
.
findById
(
startUnitId
).
get
();
Units
startUnit
=
unitsRepo
.
findById
(
startUnitId
).
get
();
List
<
CheckExamDetailVo
>
examDetailVos
=
ceVo
.
getDetail
();
List
<
CheckExamDetailVo
>
examDetailVos
=
ceVo
.
getDetail
();
...
@@ -258,7 +253,7 @@ public class DeviceCheckController {
...
@@ -258,7 +253,7 @@ public class DeviceCheckController {
// 2-1 构建发起单位的 统计账单
// 2-1 构建发起单位的 统计账单
DeviceCheckStat
provinceCheckStat
;
DeviceCheckStat
provinceCheckStat
;
//根据examStatId来判断是update还是create
//根据examStatId来判断是update还是create
DeviceCheckStat
initCheckStat
=
initStatData
(
ceVo
.
getTitle
(),
groupUserString
,
0
,
0
,
startUnit
.
getName
(),
checkedUnits
);
DeviceCheckStat
initCheckStat
=
initStatData
(
ceVo
.
getTitle
(),
groupUserString
,
0
,
0
,
startUnit
.
getName
(),
checkedUnits
,
ceVo
.
getEndTime
().
atStartOfDay
()
);
if
(
ceVo
.
getExamStatId
()
!=
0
)
{
if
(
ceVo
.
getExamStatId
()
!=
0
)
{
DeviceCheckStat
oriCheckStat
=
statRepo
.
findById
(
ceVo
.
getExamStatId
()).
get
();
DeviceCheckStat
oriCheckStat
=
statRepo
.
findById
(
ceVo
.
getExamStatId
()).
get
();
oriCheckStat
.
setRemark
(
initCheckStat
.
getRemark
());
oriCheckStat
.
setRemark
(
initCheckStat
.
getRemark
());
...
@@ -274,12 +269,13 @@ public class DeviceCheckController {
...
@@ -274,12 +269,13 @@ public class DeviceCheckController {
// 2-2 构建发起单位的 统计任务
// 2-2 构建发起单位的 统计任务
// 根据examStatId来判断要不要重新创建任务
// 根据examStatId来判断要不要重新创建任务
Integer
currentUserId
=
authenticationUtils
.
getAuthentication
().
getCurrentUserInfo
().
getUserId
();
TaskBto
cityStatTask
;
TaskBto
cityStatTask
;
if
(
ceVo
.
getExamStatId
()
==
0
)
{
if
(
ceVo
.
getExamStatId
()
==
0
)
{
cityStatTask
=
new
Task
(
CHECK_EXAM_STAT_0
.
id
,
CHECK_EXAM_STAT_0
.
name
,
0
,
".0."
,
CONFIRM_CHECK_STAT
.
id
,
statId
,
startUnitId
)
cityStatTask
=
new
Task
(
CHECK_EXAM_STAT_0
.
id
,
CHECK_EXAM_STAT_0
.
name
,
0
,
".0."
,
CONFIRM_CHECK_STAT
.
id
,
statId
,
startUnitId
)
.
parse2Bto
();
.
parse2Bto
();
cityStatTask
.
setCustomInfo
(
"exam"
);
cityStatTask
.
setCustomInfo
(
"exam"
);
cityStatTask
.
getInvolveUserIdList
().
add
(
authenticationUtils
.
getAuthentication
().
getCurrentUserInfo
().
getUserId
()
);
cityStatTask
.
getInvolveUserIdList
().
add
(
currentUserId
);
cityStatTask
.
getInvolveUserIdList
().
add
(-
1
);
cityStatTask
.
getInvolveUserIdList
().
add
(-
1
);
cityStatTask
.
setCurrentPoint
(
1
);
cityStatTask
.
setCurrentPoint
(
1
);
cityStatTask
=
taskService
.
start
(
cityStatTask
);
cityStatTask
=
taskService
.
start
(
cityStatTask
);
...
@@ -288,6 +284,7 @@ public class DeviceCheckController {
...
@@ -288,6 +284,7 @@ public class DeviceCheckController {
cityStatTask
=
taskRepo
.
findByBillIdAndBusinessType
(
ceVo
.
getExamStatId
(),
CONFIRM_CHECK_STAT
.
id
).
get
().
parse2Bto
();
cityStatTask
=
taskRepo
.
findByBillIdAndBusinessType
(
ceVo
.
getExamStatId
(),
CONFIRM_CHECK_STAT
.
id
).
get
().
parse2Bto
();
cityStatTask
.
getInvolveUserIdList
().
add
(-
1
);
cityStatTask
.
getInvolveUserIdList
().
add
(-
1
);
cityStatTask
.
setCurrentPoint
(
cityStatTask
.
getCurrentPoint
()
+
1
);
cityStatTask
.
setCurrentPoint
(
cityStatTask
.
getCurrentPoint
()
+
1
);
cityStatTask
.
setCreateUserId
(
currentUserId
);
taskService
.
update
(
cityStatTask
);
taskService
.
update
(
cityStatTask
);
}
}
...
@@ -330,7 +327,6 @@ public class DeviceCheckController {
...
@@ -330,7 +327,6 @@ public class DeviceCheckController {
// 4. 重新设置并保存统计账单
// 4. 重新设置并保存统计账单
provinceCheckStat
.
setStatInfo
(
JacksonUtil
.
toJSon
(
deviceStatVos
));
provinceCheckStat
.
setStatInfo
(
JacksonUtil
.
toJSon
(
deviceStatVos
));
statRepo
.
save
(
provinceCheckStat
);
statRepo
.
save
(
provinceCheckStat
);
myWebSocket
.
sendMessage1
();
log
.
info
(
"[核查模块] {}单位成功发起对 {} 单位的检查任务分发"
,
startUnit
.
getName
(),
checkedUnitNames
);
log
.
info
(
"[核查模块] {}单位成功发起对 {} 单位的检查任务分发"
,
startUnit
.
getName
(),
checkedUnitNames
);
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
ImmutableMap
.
of
(
"statIds"
,
statId
,
"detailIds"
,
detailIds
),
ImmutableMap
.
of
(
"statIds"
,
statId
,
"detailIds"
,
detailIds
),
...
@@ -415,9 +411,8 @@ public class DeviceCheckController {
...
@@ -415,9 +411,8 @@ public class DeviceCheckController {
}
}
});
});
statRepo
.
save
(
provVo
.
toDo
());
statRepo
.
save
(
provVo
.
toDo
());
log
.
info
(
"[核查模块
检测到是自动核查任务,将省级统计 id = {} 认为开启]
"
,
provStat
.
getId
());
log
.
info
(
"[核查模块
] 检测到是自动核查任务,将省级统计 id = {} 认为开启
"
,
provStat
.
getId
());
}
}
myWebSocket
.
sendMessage1
();
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
"专管员A操作成功"
));
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
"专管员A操作成功"
));
}
}
...
@@ -461,15 +456,14 @@ public class DeviceCheckController {
...
@@ -461,15 +456,14 @@ public class DeviceCheckController {
}
else
{
}
else
{
// 如果是2流程的,则直接结束该任务
// 如果是2流程的,则直接结束该任务
log
.
info
(
"[核查模块] 该详情任务是一个2流程任务,结束任务并统计数据..."
);
log
.
info
(
"[核查模块] 该详情任务是一个2流程任务,结束任务并统计数据..."
);
taskService
.
moveToEnd
(
currentTask
);
summaryDetail
(
currentTask
,
currentDetail
);
summaryDetail
(
currentTask
,
currentDetail
);
taskService
.
moveToEnd
(
currentTask
);
}
}
}
else
{
}
else
{
//不通过则回到第一阶段
//不通过则回到第一阶段
StatusEnum
firstStatus
=
getFirstStatus
(
currentTask
.
getBillStatus
());
StatusEnum
firstStatus
=
getFirstStatus
(
currentTask
.
getBillStatus
());
taskService
.
moveToSpecial
(
currentTask
,
firstStatus
,
currentTask
.
getFirstUserId
());
taskService
.
moveToSpecial
(
currentTask
,
firstStatus
,
currentTask
.
getFirstUserId
());
}
}
myWebSocket
.
sendMessage1
();
log
.
info
(
"[核查模块] 专管员B操作成功"
);
log
.
info
(
"[核查模块] 专管员B操作成功"
);
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
"专管B操作成功"
));
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
"专管B操作成功"
));
}
}
...
@@ -500,8 +494,8 @@ public class DeviceCheckController {
...
@@ -500,8 +494,8 @@ public class DeviceCheckController {
}
}
// 如果当前是第4步,则直接结束任务,并且进行结果汇总
// 如果当前是第4步,则直接结束任务,并且进行结果汇总
log
.
info
(
"[核查模块] D 检查组成员A正在进行核查操作,核查详情账单id为 : {}"
,
id
);
log
.
info
(
"[核查模块] D 检查组成员A正在进行核查操作,核查详情账单id为 : {}"
,
id
);
currentTask
=
taskService
.
moveToEnd
(
currentTask
);
summaryDetail
(
currentTask
,
currentDetail
);
summaryDetail
(
currentTask
,
currentDetail
);
currentTask
=
taskService
.
moveToEnd
(
currentTask
);
log
.
info
(
"[核查模块] D 操作完毕"
);
log
.
info
(
"[核查模块] D 操作完毕"
);
}
}
}
else
{
}
else
{
...
@@ -509,10 +503,68 @@ public class DeviceCheckController {
...
@@ -509,10 +503,68 @@ public class DeviceCheckController {
StatusEnum
firstStatus
=
getFirstStatus
(
currentTask
.
getBillStatus
());
StatusEnum
firstStatus
=
getFirstStatus
(
currentTask
.
getBillStatus
());
taskService
.
moveToSpecial
(
currentTask
,
firstStatus
,
currentTask
.
getFirstUserId
());
taskService
.
moveToSpecial
(
currentTask
,
firstStatus
,
currentTask
.
getFirstUserId
());
}
}
myWebSocket
.
sendMessage1
();
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
"操作成功"
));
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
"操作成功"
));
}
}
/**
* @param taskId 待办任务id
* @param statId 市级统计的STAT ID
* @return
*/
@ApiOperation
(
value
=
"跟踪任务待办办结确认"
)
@PostMapping
(
"/stat/done"
)
public
ResponseEntity
confirmDone
(
@RequestParam
int
taskId
,
@RequestParam
int
statId
)
{
log
.
info
(
"[核查模块] 正在进行办结任务确认,任务id为 : {}"
,
taskId
);
TaskBto
cityDoneTask
=
taskService
.
get
(
taskId
);
//市的task 且statId保持一致 省待办 需要的是 市的统计taskId
Specification
<
Task
>
pred
=
Specifications
.<
Task
>
and
()
.
eq
(
"billId"
,
statId
)
.
eq
(
"businessType"
,
CONFIRM_CHECK_STAT
.
id
)
.
build
();
// 找到child任务 -> 市级任务 如果是2级的则直接找自己
List
<
Task
>
tasks
=
taskRepo
.
findAll
(
pred
);
Task
cityTask
=
tasks
.
stream
()
.
filter
(
task
->
task
.
getParentTaskId
()
!=
0
&&
task
.
getParentTaskId
()
!=
null
)
.
findFirst
()
.
orElse
(
tasks
.
get
(
0
));
// 如果没有父统计TASK 则证明是两级
boolean
doubleLevel
=
cityTask
.
getParentTaskId
()
==
0
||
cityTask
.
getParentTaskId
()
==
null
;
if
(
doubleLevel
)
{
log
.
info
(
"[核查模块] 办结确认两级检查任务"
);
}
else
{
log
.
info
(
"[核查模块] 办结确认三级检查任务"
);
//1.累加数据 累加市级数据数据到省级
CheckStatVo
cityStat
=
transUtil
.
checkStatDo2Vo
(
statRepo
.
findById
(
statId
).
get
());
Integer
provStatId
=
taskService
.
get
(
cityTask
.
getParentTaskId
()).
getBillId
();
CheckStatVo
provinceStat
=
transUtil
.
checkStatDo2Vo
(
statRepo
.
findById
(
provStatId
).
get
());
String
cityName
=
areaCache
.
findById
(
unitsRepo
.
findAreaId
(
cityTask
.
getOwnUnit
())).
getName
();
// 将区级信息合并到市中
List
<
CheckDeviceStatVo
>
mergedVo
=
cityStat
.
getDeviceStatVoList
().
stream
()
.
map
(
vo
->
vo
.
combine
(
cityName
,
cityStat
.
getId
()))
.
collect
(
toList
());
// 如果是第一个市,则替换,否则累加
boolean
firstCity
=
taskService
.
TaskTreeIsStart
(
cityTask
.
getParentTaskId
(),
true
);
if
(
firstCity
){
provinceStat
.
setDeviceStatVoList
(
mergedVo
);
log
.
info
(
"[核查模块] 检测到该任务的合并状态为第一个市统计任务,因此直接替换省级统计数据"
);
}
else
{
provinceStat
.
cleanReduce
(
mergedVo
);
log
.
info
(
"[核查模块] 数据累加成功"
);
}
DeviceCheckStat
dcs
=
provinceStat
.
toDo
();
statRepo
.
save
(
dcs
);
}
//2.办结待办
taskService
.
moveToEnd
(
cityDoneTask
);
log
.
info
(
"[核查模块] 办结统计待办操作成功"
);
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
"办结统计待办确认完毕"
));
}
/**
/**
* @param statId 统计账单主键id
* @param statId 统计账单主键id
*/
*/
...
@@ -520,35 +572,23 @@ public class DeviceCheckController {
...
@@ -520,35 +572,23 @@ public class DeviceCheckController {
@PostMapping
(
"/stat/verify"
)
@PostMapping
(
"/stat/verify"
)
public
ResponseEntity
<
ResultObj
>
statConfirm
(
@RequestParam
int
statId
)
{
public
ResponseEntity
<
ResultObj
>
statConfirm
(
@RequestParam
int
statId
)
{
log
.
info
(
"[核查模块] 正在进行统计数据确认,统计账单id为 : {}"
,
statId
);
log
.
info
(
"[核查模块] 正在进行统计数据确认,统计账单id为 : {}"
,
statId
);
//将当前的统计task
完
结
//将当前的统计task
办
结
TaskBto
currentTask
=
taskService
.
get
(
statId
,
CONFIRM_CHECK_STAT
.
id
);
TaskBto
currentTask
=
taskService
.
get
(
statId
,
CONFIRM_CHECK_STAT
.
id
);
currentTask
=
taskService
.
moveToEnd
(
currentTask
);
currentTask
=
taskService
.
moveToEnd
(
currentTask
);
//如果有上级统计任务 则累加当前地区数据
Integer
parentTaskId
=
currentTask
.
getParentTaskId
();
Integer
parentTaskId
=
currentTask
.
getParentTaskId
();
boolean
hasParent
=
parentTaskId
!=
0
;
boolean
hasParent
=
parentTaskId
!=
0
;
if
(
hasParent
)
{
// 累加当前地区数据到上级(省级)
TaskBto
parentTask
=
taskService
.
get
(
parentTaskId
);
CheckStatVo
cityStat
=
transUtil
.
checkStatDo2Vo
(
statRepo
.
findById
(
statId
).
get
());
CheckStatVo
provinceStat
=
transUtil
.
checkStatDo2Vo
(
statRepo
.
findById
(
parentTask
.
getBillId
()).
get
());
String
cityName
=
areaCache
.
findById
(
unitsRepo
.
findAreaId
(
currentTask
.
getOwnUnit
())).
getName
();
// 将区级信息合并到市中
List
<
CheckDeviceStatVo
>
mergedVo
=
cityStat
.
getDeviceStatVoList
().
stream
()
.
map
(
vo
->
vo
.
combine
(
cityName
,
cityStat
.
getId
()))
.
collect
(
toList
());
provinceStat
.
cleanReduce
(
mergedVo
);
statRepo
.
save
(
provinceStat
.
toDo
());
// 如果所有子地区统计任务都已经完结,则推进父地区统计任务进度
boolean
allOver
=
taskService
.
TaskTreeIsOver
(
parentTaskId
);
if
(
allOver
)
{
TaskBto
provTask
=
taskService
.
moveToNext
(
parentTask
,
0
);
log
.
info
(
"[核查任务] 所有市的核查统计任务已经完毕,推进省级 id = {}的核查统计任务"
,
provTask
.
getId
());
}
if
(
hasParent
)
{
//市统计的办结 -> 开启对应市的待办任务
String
areaName
=
auService
.
findOne
(
AuExample
.
UnitId
,
currentTask
.
getOwnUnit
()).
getName
();
Integer
provId
=
areaRepo
.
findAreasByType
(
1
).
get
(
0
).
getId
();
TaskBto
cityDoneTask
=
new
TaskBto
(
CHECK_STAT_1
.
id
,
areaName
+
"统计确认待办任务"
,
0
,
"."
,
CONFIRM_CHECK_STAT
.
id
,
statId
,
provId
,
0
);
cityDoneTask
=
taskService
.
start
(
cityDoneTask
);
log
.
info
(
"[核查模块] 统计确认待办任务生成成功, id为 : {}"
,
cityDoneTask
.
getId
());
}
}
log
.
info
(
"[核查模块] 统计数据确认操作成功"
);
log
.
info
(
"[核查模块] 统计数据确认操作成功"
);
myWebSocket
.
sendMessage1
();
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
"统计数据确认完毕"
));
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
"统计数据确认完毕"
));
}
}
...
@@ -564,11 +604,25 @@ public class DeviceCheckController {
...
@@ -564,11 +604,25 @@ public class DeviceCheckController {
Integer
fatherTaskId
=
currentTask
.
getParentTaskId
();
Integer
fatherTaskId
=
currentTask
.
getParentTaskId
();
int
statId
=
taskRepo
.
findBillId
(
fatherTaskId
,
CONFIRM_CHECK_STAT
.
id
);
int
statId
=
taskRepo
.
findBillId
(
fatherTaskId
,
CONFIRM_CHECK_STAT
.
id
);
// 获得当前城市的统计信息 以及 要汇总的地区信息 并累加保存
// 如果是第一个区域(通过判断所有的child节点没有结束),替换掉父级的统计,如果不是第一个区域,则累加
boolean
firstArea
=
taskService
.
TaskTreeIsStart
(
fatherTaskId
,
false
);
List
<
CheckDeviceStatVo
>
addVos
=
parseStatString2Vo
(
currentTask
,
currentDetail
.
getCheckDetail
());
List
<
CheckDeviceStatVo
>
addVos
=
parseStatString2Vo
(
currentTask
,
currentDetail
.
getCheckDetail
());
CheckStatVo
resultVo
=
transUtil
.
checkStatDo2Vo
(
statRepo
.
findById
(
statId
).
get
());
CheckStatVo
cityStatVo
=
transUtil
.
checkStatDo2Vo
(
statRepo
.
findById
(
statId
).
get
());
resultVo
=
resultVo
.
cleanReduce
(
addVos
);
//addVos在内部reduce一次
statRepo
.
save
(
resultVo
.
toDo
());
addVos
=
addVos
.
stream
()
.
collect
(
groupingBy
(
v
->
v
.
getDeviceModel
()
+
v
.
getDeviceName
()))
.
values
()
.
stream
()
.
map
(
v
->
v
.
stream
().
reduce
(
CheckDeviceStatVo:
:
reduce
).
get
())
.
collect
(
toList
());
// 第一个区域替换,否则累加
if
(
firstArea
)
{
cityStatVo
.
setDeviceStatVoList
(
addVos
);
}
else
{
// 获得当前城市的统计信息 以及 要汇总的地区信息 并累加保存
cityStatVo
=
cityStatVo
.
cleanReduce
(
addVos
);
}
statRepo
.
save
(
cityStatVo
.
toDo
());
// 判断地区数据是否均汇总完毕
// 判断地区数据是否均汇总完毕
boolean
over
=
taskService
.
TaskTreeIsOver
(
fatherTaskId
);
boolean
over
=
taskService
.
TaskTreeIsOver
(
fatherTaskId
);
...
@@ -646,7 +700,7 @@ public class DeviceCheckController {
...
@@ -646,7 +700,7 @@ public class DeviceCheckController {
* @param unitsList 被核查单位列表
* @param unitsList 被核查单位列表
* @return 一份初始化好统计数据(没有向上合并 , 只做了同级地区数据合并)的核查统计单
* @return 一份初始化好统计数据(没有向上合并 , 只做了同级地区数据合并)的核查统计单
*/
*/
private
DeviceCheckStat
initStatData
(
String
title
,
String
remark
,
Integer
checkAId
,
Integer
checkBId
,
String
startUnitName
,
List
<
Units
>
unitsList
)
{
private
DeviceCheckStat
initStatData
(
String
title
,
String
remark
,
Integer
checkAId
,
Integer
checkBId
,
String
startUnitName
,
List
<
Units
>
unitsList
,
LocalDateTime
endTime
)
{
//获得要被统计的单位名列表
//获得要被统计的单位名列表
List
<
String
>
unitNameList
=
unitsList
.
stream
()
List
<
String
>
unitNameList
=
unitsList
.
stream
()
.
map
(
Units:
:
getName
)
.
map
(
Units:
:
getName
)
...
@@ -660,22 +714,22 @@ public class DeviceCheckController {
...
@@ -660,22 +714,22 @@ public class DeviceCheckController {
.
stream
()
.
stream
()
.
filter
(
dev
->
unitNameList
.
contains
(
dev
.
getOwnUnit
()))
.
filter
(
dev
->
unitNameList
.
contains
(
dev
.
getOwnUnit
()))
.
map
(
transUtil:
:
device2InitStatVo
)
.
map
(
transUtil:
:
device2InitStatVo
)
.
collect
(
toMap
(
CheckDeviceStatVo:
:
getDeviceModel
,
Function
.
identity
(),
CheckDeviceStatVo:
:
reduce
))
.
collect
(
toMap
(
d
->
d
.
getDeviceModel
()
+
d
.
getDeviceName
()
,
Function
.
identity
(),
CheckDeviceStatVo:
:
reduce
))
.
values
();
.
values
();
//缺省地区数据补充
//缺省地区数据补充
下面这段代码意义不明 - - 先注释掉 ,后面想起来了再决定是用还是删除
for
(
CheckDeviceStatVo
statVo
:
statVos
)
{
//
for (CheckDeviceStatVo statVo : statVos) {
if
(
statVo
.
getAreaStatList
().
size
()
<
unitNameList
.
size
())
{
//
if (statVo.getAreaStatList().size() < unitNameList.size()) {
List
<
String
>
existsAreaNames
=
statVo
.
getAreaStatList
().
stream
()
//
List<String> existsAreaNames = statVo.getAreaStatList().stream()
.
map
(
CheckAreaStatVo:
:
getAreaName
)
//
.map(CheckAreaStatVo::getAreaName)
.
collect
(
toList
());
//
.collect(toList());
List
<
CheckAreaStatVo
>
supplementVos
=
auList
.
stream
()
//
List<CheckAreaStatVo> supplementVos = auList.stream()
.
filter
(
au
->
!
existsAreaNames
.
contains
(
au
.
getName
()))
//
.filter(au -> !existsAreaNames.contains(au.getName()))
.
map
(
au
->
new
CheckAreaStatVo
(
au
.
getName
(),
0
,
0
,
0
,
0
,
0
,
0
))
//
.map(au -> new CheckAreaStatVo(au.getName(), 0, 0, 0, 0, 0, 0))
.
collect
(
toList
());
//
.collect(toList());
statVo
.
getAreaStatList
().
addAll
(
supplementVos
);
//
statVo.getAreaStatList().addAll(supplementVos);
}
//
}
}
//
}
return
new
DeviceCheckStat
(
return
new
DeviceCheckStat
(
CheckType
.
MANUAL_CHECK
,
CheckType
.
MANUAL_CHECK
,
...
@@ -684,7 +738,8 @@ public class DeviceCheckController {
...
@@ -684,7 +738,8 @@ public class DeviceCheckController {
JacksonUtil
.
toJSon
(
new
ArrayList
<>(
statVos
)),
JacksonUtil
.
toJSon
(
new
ArrayList
<>(
statVos
)),
checkAId
,
checkAId
,
checkBId
,
checkBId
,
remark
);
remark
,
endTime
);
}
}
private
String
addNode
(
String
originalNode
,
Integer
fatherId
)
{
private
String
addNode
(
String
originalNode
,
Integer
fatherId
)
{
...
...
dev-confirmcheck/src/main/java/com/tykj/dev/device/confirmcheck/entity/domain/DeviceCheckStat.java
浏览文件 @
85450c1d
...
@@ -102,12 +102,12 @@ public class DeviceCheckStat extends BaseEntity {
...
@@ -102,12 +102,12 @@ public class DeviceCheckStat extends BaseEntity {
this
.
remark
=
remark
;
this
.
remark
=
remark
;
}
}
public
DeviceCheckStat
(
CheckType
checkType
,
String
title
,
String
subtitle
,
String
statInfo
,
Integer
checkUserAId
,
Integer
checkUserBId
,
String
remark
)
{
public
DeviceCheckStat
(
CheckType
checkType
,
String
title
,
String
subtitle
,
String
statInfo
,
Integer
checkUserAId
,
Integer
checkUserBId
,
String
remark
,
LocalDateTime
endTime
)
{
this
.
checkType
=
checkType
;
this
.
checkType
=
checkType
;
this
.
title
=
title
;
this
.
title
=
title
;
this
.
subtitle
=
subtitle
;
this
.
subtitle
=
subtitle
;
this
.
startTime
=
LocalDateTime
.
now
();
this
.
startTime
=
LocalDateTime
.
now
();
this
.
endTime
=
LocalDateTime
.
now
().
plusMonths
(
1
)
;
this
.
endTime
=
endTime
;
this
.
statInfo
=
statInfo
;
this
.
statInfo
=
statInfo
;
this
.
checkUserAId
=
checkUserAId
;
this
.
checkUserAId
=
checkUserAId
;
this
.
checkUserBId
=
checkUserBId
;
this
.
checkUserBId
=
checkUserBId
;
...
...
dev-confirmcheck/src/main/java/com/tykj/dev/device/confirmcheck/entity/vo/CheckDeviceStatVo.java
浏览文件 @
85450c1d
...
@@ -70,7 +70,7 @@ public class CheckDeviceStatVo implements Cloneable {
...
@@ -70,7 +70,7 @@ public class CheckDeviceStatVo implements Cloneable {
}
}
/**
/**
* 累加装备统计数据(相同型号),并将其下面各个地区的统计信息合并(次级地区会强制更改为{cityName})
* 累加装备统计数据(相同型号
&名字
),并将其下面各个地区的统计信息合并(次级地区会强制更改为{cityName})
* 多用于装备统计数据中既附带区又附带市的统计信息,想全部合并为市的操作(为了统一给省级单位查看统计数据)
* 多用于装备统计数据中既附带区又附带市的统计信息,想全部合并为市的操作(为了统一给省级单位查看统计数据)
* <li>将所有地区全部改名为市级地区</li>
* <li>将所有地区全部改名为市级地区</li>
* <li>合并所有数据</li>
* <li>合并所有数据</li>
...
@@ -80,8 +80,9 @@ public class CheckDeviceStatVo implements Cloneable {
...
@@ -80,8 +80,9 @@ public class CheckDeviceStatVo implements Cloneable {
* @return 合并后的装备统计对象,基于深拷贝的新对象
* @return 合并后的装备统计对象,基于深拷贝的新对象
*/
*/
public
CheckDeviceStatVo
reduce
(
CheckDeviceStatVo
other
,
String
cityName
,
Integer
cityStatId
)
{
public
CheckDeviceStatVo
reduce
(
CheckDeviceStatVo
other
,
String
cityName
,
Integer
cityStatId
)
{
if
(!
deviceModel
.
equals
(
other
.
deviceModel
))
{
boolean
flag
=
deviceModel
.
equals
(
other
.
deviceModel
)
&&
deviceName
.
equals
(
other
.
deviceName
);
throw
new
IllegalArgumentException
(
"累加的统计信息对象必须是相同型号的装备"
);
if
(!
flag
)
{
throw
new
IllegalArgumentException
(
"累加的统计信息对象必须是相同型号与名字的装备"
);
}
}
CheckDeviceStatVo
mergeVo
=
new
CheckDeviceStatVo
(
this
);
CheckDeviceStatVo
mergeVo
=
new
CheckDeviceStatVo
(
this
);
mergeVo
.
deviceCount
+=
other
.
deviceCount
;
mergeVo
.
deviceCount
+=
other
.
deviceCount
;
...
@@ -95,11 +96,12 @@ public class CheckDeviceStatVo implements Cloneable {
...
@@ -95,11 +96,12 @@ public class CheckDeviceStatVo implements Cloneable {
*
*
* @param other 要合并的装备统计信息
* @param other 要合并的装备统计信息
* @return 合并后的装备统计信息对相关,基于深拷贝
* @return 合并后的装备统计信息对相关,基于深拷贝
* @throws IllegalArgumentException 累加的统计信息对象必须是相同型号的装备
* @throws IllegalArgumentException 累加的统计信息对象必须是相同型号
与名字
的装备
*/
*/
public
CheckDeviceStatVo
reduce
(
CheckDeviceStatVo
other
)
{
public
CheckDeviceStatVo
reduce
(
CheckDeviceStatVo
other
)
{
if
(!
deviceModel
.
equals
(
other
.
getDeviceModel
()))
{
boolean
flag
=
deviceModel
.
equals
(
other
.
getDeviceModel
())
&&
deviceName
.
equals
(
other
.
getDeviceName
());
throw
new
IllegalArgumentException
(
"累加的统计信息对象必须是相同型号的装备"
);
if
(!
flag
)
{
throw
new
IllegalArgumentException
(
"累加的统计信息对象必须是相同型号与名字的装备"
);
}
}
CheckDeviceStatVo
mergeVo
=
new
CheckDeviceStatVo
(
this
);
CheckDeviceStatVo
mergeVo
=
new
CheckDeviceStatVo
(
this
);
...
@@ -130,11 +132,12 @@ public class CheckDeviceStatVo implements Cloneable {
...
@@ -130,11 +132,12 @@ public class CheckDeviceStatVo implements Cloneable {
*
*
* @param other 要合并的装备统计信息
* @param other 要合并的装备统计信息
* @return 合并后的装备统计信息对相关,基于深拷贝
* @return 合并后的装备统计信息对相关,基于深拷贝
* @throws IllegalArgumentException 累加的统计信息对象必须是相同型号的装备
* @throws IllegalArgumentException 累加的统计信息对象必须是相同型号
与名字
的装备
*/
*/
public
CheckDeviceStatVo
cleanReduce
(
CheckDeviceStatVo
other
)
{
public
CheckDeviceStatVo
cleanReduce
(
CheckDeviceStatVo
other
)
{
if
(!
deviceModel
.
equals
(
other
.
getDeviceModel
()))
{
boolean
flag
=
deviceModel
.
equals
(
other
.
getDeviceModel
())
&&
deviceName
.
equals
(
other
.
getDeviceName
());
throw
new
IllegalArgumentException
(
"累加的统计信息对象必须是相同型号的装备"
);
if
(!
flag
)
{
throw
new
IllegalArgumentException
(
"累加的统计信息对象必须是相同型号且名称相同的装备"
);
}
}
CheckDeviceStatVo
mergeVo
=
new
CheckDeviceStatVo
(
this
);
CheckDeviceStatVo
mergeVo
=
new
CheckDeviceStatVo
(
this
);
...
...
dev-confirmcheck/src/main/java/com/tykj/dev/device/confirmcheck/entity/vo/CheckStatVo.java
浏览文件 @
85450c1d
...
@@ -110,13 +110,14 @@ public class CheckStatVo {
...
@@ -110,13 +110,14 @@ public class CheckStatVo {
return
this
;
return
this
;
}
}
//map key deviceModel+deviceName
Map
<
String
,
CheckDeviceStatVo
>
oriModelMap
=
deviceStatVoList
.
stream
()
Map
<
String
,
CheckDeviceStatVo
>
oriModelMap
=
deviceStatVoList
.
stream
()
.
collect
(
Collectors
.
toMap
(
CheckDeviceStatVo:
:
getDeviceModel
,
Function
.
identity
()));
.
collect
(
Collectors
.
toMap
(
d
->
d
.
getDeviceModel
()+
d
.
getDeviceName
()
,
Function
.
identity
()));
//遍历要加入的LIST 如果在源数据map中寻找到了则累加,否则添加进去
//遍历要加入的LIST 如果在源数据map中寻找到了则累加,否则添加进去
for
(
CheckDeviceStatVo
vo
:
otherList
)
{
for
(
CheckDeviceStatVo
vo
:
otherList
)
{
oriModelMap
.
computeIfPresent
(
vo
.
getDeviceModel
(),
(
k
,
v
)
->
v
.
cleanReduce
(
vo
));
oriModelMap
.
computeIfPresent
(
vo
.
getDeviceModel
()
+
vo
.
getDeviceName
()
,
(
k
,
v
)
->
v
.
cleanReduce
(
vo
));
oriModelMap
.
putIfAbsent
(
vo
.
getDeviceModel
(),
vo
);
oriModelMap
.
putIfAbsent
(
vo
.
getDeviceModel
()
+
vo
.
getDeviceName
()
,
vo
);
}
}
deviceStatVoList
=
new
ArrayList
<>(
oriModelMap
.
values
());
deviceStatVoList
=
new
ArrayList
<>(
oriModelMap
.
values
());
...
...
dev-confirmcheck/src/main/java/com/tykj/dev/device/confirmcheck/service/impl/ConfirmCheckServiceImpl.java
浏览文件 @
85450c1d
...
@@ -251,17 +251,17 @@ public class ConfirmCheckServiceImpl implements ConfirmCheckService, CommandLine
...
@@ -251,17 +251,17 @@ public class ConfirmCheckServiceImpl implements ConfirmCheckService, CommandLine
List
<
CheckDeviceStatVo
>
countyVo
=
regionMap
.
get
(
true
);
List
<
CheckDeviceStatVo
>
countyVo
=
regionMap
.
get
(
true
);
// 市级数据
// 市级数据
Map
<
String
,
CheckDeviceStatVo
>
map
=
regionMap
.
get
(
false
).
stream
()
Map
<
String
,
CheckDeviceStatVo
>
map
=
regionMap
.
get
(
false
).
stream
()
.
collect
(
toMap
(
CheckDeviceStatVo:
:
getDeviceModel
,
Function
.
identity
()));
.
collect
(
toMap
(
d
->
d
.
getDeviceModel
()+
d
.
getDeviceName
()
,
Function
.
identity
()));
//查找区域数据内的父级地区(即市),将数据count数据add进去(通过两次get),将areaList数据也加进去
//查找区域数据内的父级地区(即市),将数据count数据add进去(通过两次get),将areaList数据也加进去
for
(
CheckDeviceStatVo
v
:
countyVo
)
{
for
(
CheckDeviceStatVo
v
:
countyVo
)
{
String
couName
=
v
.
getAreaStatList
().
get
(
0
).
getAreaName
();
String
couName
=
v
.
getAreaStatList
().
get
(
0
).
getAreaName
();
String
cityName
=
areaCache
.
findFatherByName
(
couName
).
getName
();
String
cityName
=
areaCache
.
findFatherByName
(
couName
).
getName
();
//把相同型号的区级的数据merge到市级即可,没有的话改个名加进去
//把相同型号
与名字的
的区级的数据merge到市级即可,没有的话改个名加进去
Integer
cityStatId
=
areaStatIdMap
.
get
(
cityName
);
Integer
cityStatId
=
areaStatIdMap
.
get
(
cityName
);
map
.
computeIfPresent
(
v
.
getDeviceModel
(),
(
k
,
value
)
->
value
.
reduce
(
v
,
cityName
,
cityStatId
));
map
.
computeIfPresent
(
v
.
getDeviceModel
()
+
v
.
getDeviceName
()
,
(
k
,
value
)
->
value
.
reduce
(
v
,
cityName
,
cityStatId
));
map
.
computeIfAbsent
(
v
.
getDeviceModel
(),
k
->
{
map
.
computeIfAbsent
(
v
.
getDeviceModel
()
+
v
.
getDeviceName
()
,
k
->
{
v
.
getAreaStatList
().
forEach
(
area
->
area
.
setAreaName
(
cityName
));
v
.
getAreaStatList
().
forEach
(
area
->
area
.
setAreaName
(
cityName
));
return
v
;
return
v
;
});
});
...
@@ -288,7 +288,7 @@ public class ConfirmCheckServiceImpl implements ConfirmCheckService, CommandLine
...
@@ -288,7 +288,7 @@ public class ConfirmCheckServiceImpl implements ConfirmCheckService, CommandLine
List
<
CheckDeviceStatVo
>
cityStatVo
=
new
ArrayList
<>();
List
<
CheckDeviceStatVo
>
cityStatVo
=
new
ArrayList
<>();
statVoListCopy2
.
stream
()
statVoListCopy2
.
stream
()
.
filter
(
stat
->
cityNames
.
contains
(
stat
.
getAreaStatList
().
get
(
0
).
getAreaName
()))
.
filter
(
stat
->
cityNames
.
contains
(
stat
.
getAreaStatList
().
get
(
0
).
getAreaName
()))
.
collect
(
Collectors
.
groupingBy
(
CheckDeviceStatVo:
:
getDeviceModel
,
reducing
(
CheckDeviceStatVo:
:
reduce
)))
.
collect
(
Collectors
.
groupingBy
(
d
->
d
.
getDeviceModel
()+
d
.
getDeviceName
()
,
reducing
(
CheckDeviceStatVo:
:
reduce
)))
.
forEach
((
k
,
v
)
->
cityStatVo
.
add
(
v
.
get
()));
.
forEach
((
k
,
v
)
->
cityStatVo
.
add
(
v
.
get
()));
csd
.
setStatInfo
(
JacksonUtil
.
toJSon
(
cityStatVo
));
csd
.
setStatInfo
(
JacksonUtil
.
toJSon
(
cityStatVo
));
}
}
...
@@ -487,8 +487,8 @@ public class ConfirmCheckServiceImpl implements ConfirmCheckService, CommandLine
...
@@ -487,8 +487,8 @@ public class ConfirmCheckServiceImpl implements ConfirmCheckService, CommandLine
@Override
@Override
public
void
run
(
String
...
args
)
throws
Exception
{
public
void
run
(
String
...
args
)
throws
Exception
{
//开启计划任务
//开启计划任务
startAutoCheckCron
();
//
startAutoCheckCron();
log
.
info
(
"[核查模块] 初始化开启任务成功"
);
//
log.info("[核查模块] 初始化开启任务成功");
}
}
}
}
dev-task/src/main/java/com/tykj/dev/device/task/service/TaskService.java
浏览文件 @
85450c1d
...
@@ -149,6 +149,16 @@ public interface TaskService {
...
@@ -149,6 +149,16 @@ public interface TaskService {
*/
*/
boolean
TaskTreeIsOver
(
int
rootId
);
boolean
TaskTreeIsOver
(
int
rootId
);
/**
* 判断该任务节点下的所有节点是否任意一个都没有处于完结状态(即用来判断该任务树是否是初始状态)
* @param rootId task的根节点id
* @param currentIsOver 当前的child节点是否处于完结状态
* @return Task Tree 是否是初始状态
*/
boolean
TaskTreeIsStart
(
int
rootId
,
boolean
currentIsOver
);
/**
/**
* @param oldUserId 旧专管员id
* @param oldUserId 旧专管员id
* @param newUserId 新交接专管员id
* @param newUserId 新交接专管员id
...
...
dev-task/src/main/java/com/tykj/dev/device/task/service/impl/TaskServiceImpl.java
浏览文件 @
85450c1d
...
@@ -286,7 +286,7 @@ public class TaskServiceImpl implements TaskService {
...
@@ -286,7 +286,7 @@ public class TaskServiceImpl implements TaskService {
public
TaskBto
start
(
TaskBto
taskBto
)
{
public
TaskBto
start
(
TaskBto
taskBto
)
{
Task
task
=
taskDao
.
save
(
taskBto
.
toDo
());
Task
task
=
taskDao
.
save
(
taskBto
.
toDo
());
myWebSocket
.
sendMessage1
();
myWebSocket
.
sendMessage1
();
CompletableFuture
.
runAsync
(()
->{
CompletableFuture
.
runAsync
(()
->
{
try
{
try
{
Thread
.
sleep
(
2000
);
Thread
.
sleep
(
2000
);
}
catch
(
InterruptedException
e
)
{
}
catch
(
InterruptedException
e
)
{
...
@@ -336,7 +336,7 @@ public class TaskServiceImpl implements TaskService {
...
@@ -336,7 +336,7 @@ public class TaskServiceImpl implements TaskService {
public
Task
update
(
TaskBto
taskBto
)
{
public
Task
update
(
TaskBto
taskBto
)
{
taskBto
.
setUserReadDetailList
(
new
ArrayList
<>());
taskBto
.
setUserReadDetailList
(
new
ArrayList
<>());
Task
task
=
taskDao
.
save
(
taskBto
.
toDo
());
Task
task
=
taskDao
.
save
(
taskBto
.
toDo
());
CompletableFuture
.
runAsync
(()
->
blockChainUtil
.
appendHash
(
JacksonUtil
.
toJSon
(
taskBto
.
toDo
()),
taskBto
.
getRecordId
()),
TaskBeanConfig
.
getThreadPoolTaskScheduler
());
CompletableFuture
.
runAsync
(()
->
blockChainUtil
.
appendHash
(
JacksonUtil
.
toJSon
(
taskBto
.
toDo
()),
taskBto
.
getRecordId
()),
TaskBeanConfig
.
getThreadPoolTaskScheduler
());
return
task
;
return
task
;
}
}
...
@@ -365,7 +365,7 @@ public class TaskServiceImpl implements TaskService {
...
@@ -365,7 +365,7 @@ public class TaskServiceImpl implements TaskService {
@Override
@Override
public
List
<
TaskUserVo
>
getList
(
TaskSelectVo
taskSelectVo
)
{
public
List
<
TaskUserVo
>
getList
(
TaskSelectVo
taskSelectVo
)
{
List
<
TaskUserVo
>
taskEntities
=
getTaskUserVoList
(
taskSelectVo
);
List
<
TaskUserVo
>
taskEntities
=
getTaskUserVoList
(
taskSelectVo
);
if
(
taskSelectVo
.
getOrders
().
size
()
>
0
)
{
if
(
taskSelectVo
.
getOrders
().
size
()
>
0
)
{
//根据vo待办和跟踪时间的查询顺序按顺序或降序排序输出
//根据vo待办和跟踪时间的查询顺序按顺序或降序排序输出
if
(
taskSelectVo
.
getSelectNum
()
==
2
&&
"trackingTime"
.
equals
(
taskSelectVo
.
getOrders
().
get
(
0
).
getCoulmn
()))
{
if
(
taskSelectVo
.
getSelectNum
()
==
2
&&
"trackingTime"
.
equals
(
taskSelectVo
.
getOrders
().
get
(
0
).
getCoulmn
()))
{
if
(
"ASC"
.
equals
(
taskSelectVo
.
getOrders
().
get
(
0
).
getDirection
().
toString
()))
{
if
(
"ASC"
.
equals
(
taskSelectVo
.
getOrders
().
get
(
0
).
getDirection
().
toString
()))
{
...
@@ -406,7 +406,7 @@ public class TaskServiceImpl implements TaskService {
...
@@ -406,7 +406,7 @@ public class TaskServiceImpl implements TaskService {
.
filter
(
taskUserVo
->
find
(
taskUserVo
.
getId
(),
list
)
>
-
1
)
.
filter
(
taskUserVo
->
find
(
taskUserVo
.
getId
(),
list
)
>
-
1
)
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
//判断是否需要按发起时间排序
//判断是否需要按发起时间排序
if
(
taskSelectVo
.
getOrders
().
size
()
>
0
)
{
if
(
taskSelectVo
.
getOrders
().
size
()
>
0
)
{
if
(
"createTime"
.
equals
(
taskSelectVo
.
getOrders
().
get
(
0
).
getCoulmn
()))
{
if
(
"createTime"
.
equals
(
taskSelectVo
.
getOrders
().
get
(
0
).
getCoulmn
()))
{
if
(
"ASC"
.
equals
(
taskSelectVo
.
getOrders
().
get
(
0
).
getDirection
().
toString
()))
{
if
(
"ASC"
.
equals
(
taskSelectVo
.
getOrders
().
get
(
0
).
getDirection
().
toString
()))
{
return
taskUtils
.
orderByCreateTimeAsc2
(
taskUserVos
);
return
taskUtils
.
orderByCreateTimeAsc2
(
taskUserVos
);
...
@@ -446,25 +446,24 @@ public class TaskServiceImpl implements TaskService {
...
@@ -446,25 +446,24 @@ public class TaskServiceImpl implements TaskService {
if
(
taskUserVo
.
getInvolveUserIdList
()
!=
null
&&
taskUserVo
.
getInvolveUserIdList
().
size
()
>
0
)
{
if
(
taskUserVo
.
getInvolveUserIdList
()
!=
null
&&
taskUserVo
.
getInvolveUserIdList
().
size
()
>
0
)
{
//获取涉及人员当前指针
//获取涉及人员当前指针
List
<
Integer
>
userIds
=
taskUserVo
.
getInvolveUserIdList
();
List
<
Integer
>
userIds
=
taskUserVo
.
getInvolveUserIdList
();
if
(
userIds
.
size
()
>
0
&&
taskUserVo
.
getCurrentPoint
()
<
userIds
.
size
())
{
if
(
userIds
.
size
()
>
0
&&
taskUserVo
.
getCurrentPoint
()
<
userIds
.
size
())
{
Integer
userId3
=
userIds
.
get
(
taskUserVo
.
getCurrentPoint
());
Integer
userId3
=
userIds
.
get
(
taskUserVo
.
getCurrentPoint
());
//当前指针userId大于0,待办人即当前id
//当前指针userId大于0,待办人即当前id
if
(
userId3
>
0
)
{
if
(
userId3
>
0
)
{
taskUserVo
.
setProcessingUser
(
userCache
.
findById
(
userId3
).
getName
());
taskUserVo
.
setProcessingUser
(
userCache
.
findById
(
userId3
).
getName
());
}
}
//当前指针userId等于0,待办人为所属单位下所有用户
//当前指针userId等于0,待办人为所属单位下所有用户
else
if
(
userId3
==
0
&&
taskUserVo
.
getOwnUnit
()!=
null
)
{
else
if
(
userId3
==
0
&&
taskUserVo
.
getOwnUnit
()
!=
null
)
{
StringBuffer
stringBuffer
=
new
StringBuffer
();
StringBuffer
stringBuffer
=
new
StringBuffer
();
List
<
User
>
users
=
userCache
.
findAll
();
List
<
User
>
users
=
userCache
.
findAll
();
users
.
stream
().
filter
(
user
->
user
.
getUnitsId
().
equals
(
taskUserVo
.
getOwnUnit
())).
forEach
(
user
->
{
users
.
stream
().
filter
(
user
->
user
.
getUnitsId
().
equals
(
taskUserVo
.
getOwnUnit
())).
forEach
(
user
->
{
stringBuffer
.
append
(
user
.
getName
()).
append
(
","
);
stringBuffer
.
append
(
user
.
getName
()).
append
(
","
);
});
});
if
(
stringBuffer
.
length
()
>
0
)
{
if
(
stringBuffer
.
length
()
>
0
)
{
stringBuffer
.
deleteCharAt
(
stringBuffer
.
length
()
-
1
);
stringBuffer
.
deleteCharAt
(
stringBuffer
.
length
()
-
1
);
}
}
taskUserVo
.
setProcessingUser
(
stringBuffer
.
toString
());
taskUserVo
.
setProcessingUser
(
stringBuffer
.
toString
());
}
}
else
{
else
{
taskUserVo
.
setProcessingUser
(
""
);
taskUserVo
.
setProcessingUser
(
""
);
}
}
}
}
...
@@ -520,7 +519,6 @@ public class TaskServiceImpl implements TaskService {
...
@@ -520,7 +519,6 @@ public class TaskServiceImpl implements TaskService {
@Override
@Override
public
boolean
TaskTreeIsOver
(
int
rootId
)
{
public
boolean
TaskTreeIsOver
(
int
rootId
)
{
List
<
Task
>
taskList
=
taskDao
.
findAllByParentTaskId
(
rootId
);
List
<
Task
>
taskList
=
taskDao
.
findAllByParentTaskId
(
rootId
);
if
(
CollectionUtils
.
isEmpty
(
taskList
))
{
if
(
CollectionUtils
.
isEmpty
(
taskList
))
{
return
true
;
return
true
;
}
else
{
}
else
{
...
@@ -529,6 +527,32 @@ public class TaskServiceImpl implements TaskService {
...
@@ -529,6 +527,32 @@ public class TaskServiceImpl implements TaskService {
}
}
}
}
/**
* 判断该任务节点下的下一级节点是否任意一个都没有处于完结状态(即用来判断该任务树是否是初始状态)
*
* @param rootId task的根节点id
* @return Task Tree 是否是初始状态
*/
@Override
public
boolean
TaskTreeIsStart
(
int
rootId
,
boolean
currentIsOver
)
{
List
<
Task
>
taskList
=
taskDao
.
findAllByParentTaskId
(
rootId
);
if
(
CollectionUtils
.
isEmpty
(
taskList
))
{
return
false
;
}
else
{
long
overJobCount
=
taskList
.
stream
()
.
filter
(
task
->
task
.
getBillStatus
().
equals
(
StatusEnum
.
END
.
id
))
.
count
();
//如果当前任务是完结的,那么完结数量等于1就证明是初始状态,否则必须为0
if
(
currentIsOver
)
{
return
overJobCount
==
1
;
}
else
{
return
overJobCount
==
0
;
}
}
}
/**
/**
* @param oldUserId 旧专管员id
* @param oldUserId 旧专管员id
* @param newUserId 新交接专管员id
* @param newUserId 新交接专管员id
...
@@ -639,7 +663,7 @@ public class TaskServiceImpl implements TaskService {
...
@@ -639,7 +663,7 @@ public class TaskServiceImpl implements TaskService {
boolean
userConfirm2
=
taskBto
.
getInvolveUserIdList
().
get
(
taskBto
.
getCurrentPoint
())
==
-
1
;
boolean
userConfirm2
=
taskBto
.
getInvolveUserIdList
().
get
(
taskBto
.
getCurrentPoint
())
==
-
1
;
boolean
pointExists
=
taskBto
.
getCurrentPoint
()
<
taskBto
.
getInvolveUserIdList
().
size
();
boolean
pointExists
=
taskBto
.
getCurrentPoint
()
<
taskBto
.
getInvolveUserIdList
().
size
();
boolean
userConfirm
=
userId
.
equals
(
taskBto
.
getInvolveUserIdList
().
get
(
taskBto
.
getCurrentPoint
()));
boolean
userConfirm
=
userId
.
equals
(
taskBto
.
getInvolveUserIdList
().
get
(
taskBto
.
getCurrentPoint
()));
boolean
isDraft
=
taskBto
.
getBillStatus
()
==
201
||
taskBto
.
getBillStatus
()==
333
||
taskBto
.
getBillStatus
()==
810
||
taskBto
.
getBillStatus
()==
322
||
taskBto
.
getBillStatus
()==
722
;
boolean
isDraft
=
taskBto
.
getBillStatus
()
==
201
||
taskBto
.
getBillStatus
()
==
333
||
taskBto
.
getBillStatus
()
==
810
||
taskBto
.
getBillStatus
()
==
322
||
taskBto
.
getBillStatus
()
==
722
;
boolean
isCreateUser
=
userId
.
equals
(
taskBto
.
getCreateUserId
());
boolean
isCreateUser
=
userId
.
equals
(
taskBto
.
getCreateUserId
());
return
unitExists
&&
pointExists
&&
!
userConfirm
&&
!
userConfirm2
&&
!
isDraft
&&
isCreateUser
;
return
unitExists
&&
pointExists
&&
!
userConfirm
&&
!
userConfirm2
&&
!
isDraft
&&
isCreateUser
;
})
})
...
@@ -652,7 +676,7 @@ public class TaskServiceImpl implements TaskService {
...
@@ -652,7 +676,7 @@ public class TaskServiceImpl implements TaskService {
boolean
userConfirm
=
taskBto
.
getInvolveUserIdList
().
get
(
taskBto
.
getCurrentPoint
())
==
-
1
;
boolean
userConfirm
=
taskBto
.
getInvolveUserIdList
().
get
(
taskBto
.
getCurrentPoint
())
==
-
1
;
boolean
unitConfirm
=
taskBto
.
getOwnUnit
().
equals
(
unitId
);
boolean
unitConfirm
=
taskBto
.
getOwnUnit
().
equals
(
unitId
);
boolean
isCreateUser
=
userId
.
equals
(
taskBto
.
getCreateUserId
());
boolean
isCreateUser
=
userId
.
equals
(
taskBto
.
getCreateUserId
());
return
pointExists
&&
userConfirm
&&
unitConfirm
&&
isCreateUser
;
return
pointExists
&&
userConfirm
&&
unitConfirm
&&
isCreateUser
;
})
})
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
taskBtoList
.
addAll
(
taskBtos1
);
taskBtoList
.
addAll
(
taskBtos1
);
...
@@ -696,25 +720,24 @@ public class TaskServiceImpl implements TaskService {
...
@@ -696,25 +720,24 @@ public class TaskServiceImpl implements TaskService {
if
(
taskUserVo
.
getInvolveUserIdList
()
!=
null
&&
taskUserVo
.
getInvolveUserIdList
().
size
()
>
0
)
{
if
(
taskUserVo
.
getInvolveUserIdList
()
!=
null
&&
taskUserVo
.
getInvolveUserIdList
().
size
()
>
0
)
{
//获取涉及人员当前指针
//获取涉及人员当前指针
List
<
Integer
>
userIds
=
taskUserVo
.
getInvolveUserIdList
();
List
<
Integer
>
userIds
=
taskUserVo
.
getInvolveUserIdList
();
if
(
userIds
.
size
()
>
0
&&
taskUserVo
.
getCurrentPoint
()
<
userIds
.
size
())
{
if
(
userIds
.
size
()
>
0
&&
taskUserVo
.
getCurrentPoint
()
<
userIds
.
size
())
{
Integer
userId3
=
userIds
.
get
(
taskUserVo
.
getCurrentPoint
());
Integer
userId3
=
userIds
.
get
(
taskUserVo
.
getCurrentPoint
());
//当前指针userId大于0,待办人即当前id
//当前指针userId大于0,待办人即当前id
if
(
userId3
>
0
)
{
if
(
userId3
>
0
)
{
taskUserVo
.
setProcessingUser
(
userCache
.
findById
(
userId3
).
getName
());
taskUserVo
.
setProcessingUser
(
userCache
.
findById
(
userId3
).
getName
());
}
}
//当前指针userId等于0,待办人为所属单位下所有用户
//当前指针userId等于0,待办人为所属单位下所有用户
else
if
(
userId3
==
0
&&
taskUserVo
.
getOwnUnit
()!=
null
)
{
else
if
(
userId3
==
0
&&
taskUserVo
.
getOwnUnit
()
!=
null
)
{
StringBuffer
stringBuffer
=
new
StringBuffer
();
StringBuffer
stringBuffer
=
new
StringBuffer
();
List
<
User
>
users
=
userCache
.
findAll
();
List
<
User
>
users
=
userCache
.
findAll
();
users
.
stream
().
filter
(
user
->
user
.
getUnitsId
().
equals
(
taskUserVo
.
getOwnUnit
())).
forEach
(
user
->
{
users
.
stream
().
filter
(
user
->
user
.
getUnitsId
().
equals
(
taskUserVo
.
getOwnUnit
())).
forEach
(
user
->
{
stringBuffer
.
append
(
user
.
getName
()).
append
(
","
);
stringBuffer
.
append
(
user
.
getName
()).
append
(
","
);
});
});
if
(
stringBuffer
.
length
()
>
0
)
{
if
(
stringBuffer
.
length
()
>
0
)
{
stringBuffer
.
deleteCharAt
(
stringBuffer
.
length
()
-
1
);
stringBuffer
.
deleteCharAt
(
stringBuffer
.
length
()
-
1
);
}
}
taskUserVo
.
setProcessingUser
(
stringBuffer
.
toString
());
taskUserVo
.
setProcessingUser
(
stringBuffer
.
toString
());
}
}
else
{
else
{
taskUserVo
.
setProcessingUser
(
""
);
taskUserVo
.
setProcessingUser
(
""
);
}
}
}
}
...
@@ -828,10 +851,10 @@ public class TaskServiceImpl implements TaskService {
...
@@ -828,10 +851,10 @@ public class TaskServiceImpl implements TaskService {
* @param userIds 用户Id列表
* @param userIds 用户Id列表
* @return 返回存在这些用户的单位
* @return 返回存在这些用户的单位
*/
*/
private
Set
<
Integer
>
getUnitsByUsers
(
List
<
Integer
>
userIds
){
private
Set
<
Integer
>
getUnitsByUsers
(
List
<
Integer
>
userIds
)
{
Set
<
Integer
>
unitIds
=
new
HashSet
<>();
Set
<
Integer
>
unitIds
=
new
HashSet
<>();
userIds
.
forEach
(
integer
->
{
userIds
.
forEach
(
integer
->
{
if
(
integer
>
0
)
{
if
(
integer
>
0
)
{
unitIds
.
add
(
userCache
.
findById
(
integer
).
getUnitsId
());
unitIds
.
add
(
userCache
.
findById
(
integer
).
getUnitsId
());
}
}
});
});
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论