Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
device-back
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
1
议题
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Matrix
device-back
Commits
883b4363
提交
883b4363
authored
8月 20, 2021
作者:
Matrix
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(核查模块): 完成了核查模块的回退功能
- 完成了核查模块的回退功能
上级
e70bc3b6
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
668 行增加
和
330 行删除
+668
-330
LogType.java
dev-config/src/main/java/com/tykj/dev/config/LogType.java
+25
-16
CheckChart.java
...a/com/tykj/dev/device/confirmcheck/common/CheckChart.java
+40
-0
DeviceCheckController.java
...device/confirmcheck/controller/DeviceCheckController.java
+561
-296
DeviceCheckDetail.java
.../device/confirmcheck/entity/domain/DeviceCheckDetail.java
+1
-1
CheckExamDetailVo.java
.../dev/device/confirmcheck/entity/vo/CheckExamDetailVo.java
+3
-2
ConfirmCheckServiceImpl.java
...ce/confirmcheck/service/impl/ConfirmCheckServiceImpl.java
+3
-3
StatusEnum.java
...misc/src/main/java/com/tykj/dev/misc/base/StatusEnum.java
+8
-4
TaskServiceImpl.java
...om/tykj/dev/device/task/service/impl/TaskServiceImpl.java
+1
-1
common_settings.md
docs/common_settings.md
+6
-0
confirm_check.md
docs/confirm_check.md
+20
-7
没有找到文件。
dev-config/src/main/java/com/tykj/dev/config/LogType.java
浏览文件 @
883b4363
...
@@ -107,23 +107,19 @@ public enum LogType {
...
@@ -107,23 +107,19 @@ public enum LogType {
TRAIN_1
(
46
,
TRAIN
.
id
,
ORIGIN_STATUS
.
id
,
TRAIN1000
.
id
,
"发起培训"
),
TRAIN_1
(
46
,
TRAIN
.
id
,
ORIGIN_STATUS
.
id
,
TRAIN1000
.
id
,
"发起培训"
),
CONFIRM_CHECK_DETAIL_NORMAL_0
(
401
,
CONFIRM_CHECK_DETAIL
.
id
,
ORIGIN_STATUS
.
id
,
CHECK_DETAIL_0
.
id
,
"核查详情任务开始"
),
CONFIRM_CHECK_DETAIL_NORMAL_0
(
401
,
CONFIRM_CHECK_DETAIL
.
id
,
ORIGIN_STATUS
.
id
,
CHECK_DETAIL_
REGION_
0
.
id
,
"核查详情任务开始"
),
CONFIRM_CHECK_DETAIL_NORMAL_1
(
402
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_DETAIL_
0
.
id
,
CHECK_DETAIL
_1
.
id
,
"A岗核查成功,等待专管员B操作"
),
CONFIRM_CHECK_DETAIL_NORMAL_1
(
402
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_DETAIL_
REGION_0
.
id
,
CHECK_DETAIL_REGION
_1
.
id
,
"A岗核查成功,等待专管员B操作"
),
CONFIRM_CHECK_DETAIL_NORMAL_2
(
403
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_DETAIL_
1
.
id
,
CHECK_DETAIL
_2
.
id
,
"B岗核查成功,等待核查组成员A审核"
),
CONFIRM_CHECK_DETAIL_NORMAL_2
(
403
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_DETAIL_
REGION_1
.
id
,
CHECK_DETAIL_REGION
_2
.
id
,
"B岗核查成功,等待核查组成员A审核"
),
CONFIRM_CHECK_DETAIL_NORMAL_3
(
404
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_DETAIL_
2
.
id
,
CHECK_DETAIL_3
.
id
,
"核查组成员A核查成功,等待核查组成员B审核
"
),
CONFIRM_CHECK_DETAIL_NORMAL_3
(
404
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_DETAIL_
REGION_2
.
id
,
END
.
id
,
"市专管员审核成功,该自查任务完结
"
),
CONFIRM_CHECK_DETAIL_
NORMAL_4
(
405
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_DETAIL_3
.
id
,
END
.
id
,
"核查组成员B核查成功
,任务结束,上传数据到统计信息"
),
CONFIRM_CHECK_DETAIL_
OTHER_1
(
406
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_DETAIL_REGION_1
.
id
,
END
.
id
,
"B岗核查成功,该任务没有核查组成员
,任务结束,上传数据到统计信息"
),
CONFIRM_CHECK_DETAIL_OTHER_
1
(
406
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_DETAIL_1
.
id
,
END
.
id
,
"B岗核查成功,该任务没有核查组成员,任务结束,上传数据到统计信息
"
),
CONFIRM_CHECK_DETAIL_OTHER_
2
(
407
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_DETAIL_REGION_1
.
id
,
CHECK_DETAIL_REGION_0
.
id
,
"B岗审核失败,跳回区A岗人员操作
"
),
CONFIRM_CHECK_DETAIL_OTHER_2
(
407
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_DETAIL_1
.
id
,
CHECK_DETAIL_0
.
id
,
"B岗审核失败,跳回A岗人员操作"
),
CONFIRM_CHECK_DETAIL_OTHER_3
(
408
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_DETAIL_REGION_2
.
id
,
CHECK_DETAIL_REGION_0
.
id
,
"市专管员审核失败,跳回区A岗人员操作"
),
CONFIRM_CHECK_DETAIL_OTHER_3
(
408
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_DETAIL_2
.
id
,
CHECK_DETAIL_0
.
id
,
"核查组成员A审核失败,跳回A岗人员操作"
),
CONFIRM_CHECK_DETAIL_OTHER_4
(
409
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_DETAIL_3
.
id
,
CHECK_DETAIL_0
.
id
,
"核查组成员B审核失败,跳回A岗人员操作"
),
CONFIRM_CHECK_DETAIL_STAT_0
(
410
,
CONFIRM_CHECK_STAT
.
id
,
ORIGIN_STATUS
.
id
,
CHECK_STAT_0
.
id
,
"核查统计任务开始"
),
CONFIRM_CHECK_DETAIL_STAT_0
(
410
,
CONFIRM_CHECK_STAT
.
id
,
ORIGIN_STATUS
.
id
,
CHECK_STAT_0
.
id
,
"核查统计任务开始"
),
...
@@ -137,20 +133,33 @@ public enum LogType {
...
@@ -137,20 +133,33 @@ public enum LogType {
CONFIRM_CHECK_EXAM_STAT_2
(
415
,
CONFIRM_CHECK_STAT
.
id
,
CHECK_EXAM_STAT_1
.
id
,
END
.
id
,
"检查统计任务数据已确认完毕,任务完结"
),
CONFIRM_CHECK_EXAM_STAT_2
(
415
,
CONFIRM_CHECK_STAT
.
id
,
CHECK_EXAM_STAT_1
.
id
,
END
.
id
,
"检查统计任务数据已确认完毕,任务完结"
),
CONFIRM_CHECK_EXAM_DETAIL_0
(
416
,
CONFIRM_CHECK_DETAIL
.
id
,
ORIGIN_STATUS
.
id
,
CHECK_
EXAM_DETAIL
_0
.
id
,
"检查详情任务开始"
),
CONFIRM_CHECK_EXAM_DETAIL_0
(
416
,
CONFIRM_CHECK_DETAIL
.
id
,
ORIGIN_STATUS
.
id
,
CHECK_
DETAIL_REGION
_0
.
id
,
"检查详情任务开始"
),
CONFIRM_CHECK_EXAM_DETAIL_1
(
417
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_
EXAM_DETAIL_0
.
id
,
CHECK_EXAM_DETAIL
_1
.
id
,
"A岗核查成功,等待专管员B操作"
),
CONFIRM_CHECK_EXAM_DETAIL_1
(
417
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_
DETAIL_REGION_0
.
id
,
CHECK_DETAIL_REGION
_1
.
id
,
"A岗核查成功,等待专管员B操作"
),
CONFIRM_CHECK_EXAM_DETAIL_2
(
418
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_
EXAM_DETAIL
_1
.
id
,
END
.
id
,
"专管员B核查成功,该地区的检查任务结束了"
),
CONFIRM_CHECK_EXAM_DETAIL_2
(
418
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_
DETAIL_REGION
_1
.
id
,
END
.
id
,
"专管员B核查成功,该地区的检查任务结束了"
),
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_
DETAIL_REGION_1
.
id
,
CHECK_DETAIL_REGION
_0
.
id
,
"B岗审核失败,跳回A岗人员操作"
),
CONFIRM_CHECK_EXAM_STAT_3
(
420
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_EXAM_STAT_0
.
id
,
END
.
id
,
"检查统计任务数据已确认完毕,任务完结"
),
CONFIRM_CHECK_EXAM_STAT_3
(
420
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_EXAM_STAT_0
.
id
,
END
.
id
,
"检查统计任务数据已确认完毕,任务完结"
),
CONFIRM_CHECK_SELF_ROLLBACK
(
421
,
CONFIRM_CHECK_DETAIL
.
id
,
END
.
id
,
CHECK_
EXAM_DETAIL
_0
.
id
,
"自查任务已退回至等待专管员A处理状态"
),
CONFIRM_CHECK_SELF_ROLLBACK
(
421
,
CONFIRM_CHECK_DETAIL
.
id
,
END
.
id
,
CHECK_
DETAIL_REGION
_0
.
id
,
"自查任务已退回至等待专管员A处理状态"
),
CONFIRM_CHECK_EXAM_ROLLBACK
(
422
,
CONFIRM_CHECK_DETAIL
.
id
,
END
.
id
,
CHECK_EXAM_STAT_1
.
id
,
"检查任务已退回至等待确认状态"
),
CONFIRM_CHECK_EXAM_ROLLBACK
(
422
,
CONFIRM_CHECK_DETAIL
.
id
,
END
.
id
,
CHECK_EXAM_STAT_1
.
id
,
"检查任务已退回至等待确认状态"
),
CONFIRM_CHECK_EXAM_CITY_DETAIL_0
(
423
,
CONFIRM_CHECK_DETAIL
.
id
,
ORIGIN_STATUS
.
id
,
CHECK_DETAIL_CITY_0
.
id
,
"检查详情任务开始"
),
CONFIRM_CHECK_EXAM_CITY_DETAIL_1
(
424
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_DETAIL_CITY_0
.
id
,
CHECK_DETAIL_CITY_1
.
id
,
"专管员A操作成功,等待专管员B操作"
),
CONFIRM_CHECK_EXAM_CITY_DETAIL_REDO
(
425
,
CONFIRM_CHECK_DETAIL
.
id
,
END
.
id
,
CHECK_DETAIL_CITY_0
.
id
,
"检查详情任务开始重做"
),
CONFIRM_CHECK_EXAM_CITY_VERIFY_DONE
(
426
,
CONFIRM_CHECK_DETAIL
.
id
,
CONFIRM_STAT_0
.
id
,
END
.
id
,
"市统计数据确认完毕"
),
CONFIRM_CHECK_EXAM_CITY_DETAIL_DONE
(
427
,
CONFIRM_CHECK_DETAIL
.
id
,
CHECK_DETAIL_CITY_1
.
id
,
END
.
id
,
"专管员B处理完毕"
),
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/common/CheckChart.java
0 → 100644
浏览文件 @
883b4363
package
com
.
tykj
.
dev
.
device
.
confirmcheck
.
common
;
import
com.tykj.dev.config.Log
;
import
com.tykj.dev.misc.base.StatusEnum
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.HashMap
;
import
java.util.Map
;
import
static
com
.
tykj
.
dev
.
misc
.
base
.
StatusEnum
.*;
/**
* CheckChart. 里面用于存放核查模块要用到的一些对照表Map
*
* @author Matrix <xhyrzldf@gmail.com>
* @since 2021/8/19 at 3:14 下午
*/
@Data
@Slf4j
public
class
CheckChart
{
/**
* key = 任务状态编号 , value = 核查情况 , 用于市区自核查页面
*/
public
static
Map
<
Integer
,
String
>
taskStatus2Situation
=
new
HashMap
<>();
static
{
taskStatus2Situation
.
put
(
CHECK_DETAIL_CITY_0
.
id
,
"无"
);
taskStatus2Situation
.
put
(
CHECK_DETAIL_CITY_1
.
id
,
"进行中"
);
taskStatus2Situation
.
put
(
CHECK_DETAIL_REGION_0
.
id
,
"无"
);
taskStatus2Situation
.
put
(
CHECK_DETAIL_REGION_1
.
id
,
"进行中"
);
taskStatus2Situation
.
put
(
CHECK_DETAIL_REGION_2
.
id
,
"等待市审核"
);
taskStatus2Situation
.
put
(
END
.
id
,
"完成"
);
log
.
info
(
"[核查模块] 初始化taskStatus2Situation 完毕 , size = {}"
,
CheckChart
.
taskStatus2Situation
.
size
());
}
}
dev-confirmcheck/src/main/java/com/tykj/dev/device/confirmcheck/controller/DeviceCheckController.java
浏览文件 @
883b4363
...
@@ -5,6 +5,7 @@ import com.google.common.collect.ImmutableMap;
...
@@ -5,6 +5,7 @@ import com.google.common.collect.ImmutableMap;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
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
;
import
com.tykj.dev.device.confirmcheck.common.CheckChart
;
import
com.tykj.dev.device.confirmcheck.common.CheckType
;
import
com.tykj.dev.device.confirmcheck.common.CheckType
;
import
com.tykj.dev.device.confirmcheck.common.TaskPeriod
;
import
com.tykj.dev.device.confirmcheck.common.TaskPeriod
;
import
com.tykj.dev.device.confirmcheck.entity.domain.DeviceCheckDetail
;
import
com.tykj.dev.device.confirmcheck.entity.domain.DeviceCheckDetail
;
...
@@ -18,6 +19,7 @@ import com.tykj.dev.device.confirmcheck.utils.ObjTransUtil;
...
@@ -18,6 +19,7 @@ import com.tykj.dev.device.confirmcheck.utils.ObjTransUtil;
import
com.tykj.dev.device.file.entity.FileRet
;
import
com.tykj.dev.device.file.entity.FileRet
;
import
com.tykj.dev.device.file.service.FilesUtil
;
import
com.tykj.dev.device.file.service.FilesUtil
;
import
com.tykj.dev.device.library.repository.DeviceLibraryDao
;
import
com.tykj.dev.device.library.repository.DeviceLibraryDao
;
import
com.tykj.dev.device.library.service.DeviceLibraryCacheService
;
import
com.tykj.dev.device.library.subject.domin.DeviceLibrary
;
import
com.tykj.dev.device.library.subject.domin.DeviceLibrary
;
import
com.tykj.dev.device.selfcheck.controller.SelfCheckController
;
import
com.tykj.dev.device.selfcheck.controller.SelfCheckController
;
import
com.tykj.dev.device.task.repository.TaskDao
;
import
com.tykj.dev.device.task.repository.TaskDao
;
...
@@ -33,6 +35,7 @@ import com.tykj.dev.device.user.subject.entity.Units;
...
@@ -33,6 +35,7 @@ import com.tykj.dev.device.user.subject.entity.Units;
import
com.tykj.dev.device.user.subject.entity.User
;
import
com.tykj.dev.device.user.subject.entity.User
;
import
com.tykj.dev.device.user.subject.entity.bto.AreaUnit
;
import
com.tykj.dev.device.user.subject.entity.bto.AreaUnit
;
import
com.tykj.dev.device.user.subject.service.AuService
;
import
com.tykj.dev.device.user.subject.service.AuService
;
import
com.tykj.dev.device.user.subject.service.UserService
;
import
com.tykj.dev.device.user.util.AuthenticationUtils
;
import
com.tykj.dev.device.user.util.AuthenticationUtils
;
import
com.tykj.dev.misc.base.ResultObj
;
import
com.tykj.dev.misc.base.ResultObj
;
import
com.tykj.dev.misc.base.StatusEnum
;
import
com.tykj.dev.misc.base.StatusEnum
;
...
@@ -44,11 +47,11 @@ import io.swagger.annotations.ApiOperation;
...
@@ -44,11 +47,11 @@ import io.swagger.annotations.ApiOperation;
import
io.swagger.annotations.ApiParam
;
import
io.swagger.annotations.ApiParam
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.jetbrains.annotations.NotNull
;
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.data.jpa.domain.Specification
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
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
;
...
@@ -57,7 +60,6 @@ import java.time.LocalTime;
...
@@ -57,7 +60,6 @@ import java.time.LocalTime;
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
;
import
java.util.function.Predicate
;
import
static
com
.
tykj
.
dev
.
misc
.
base
.
BusinessEnum
.
CONFIRM_CHECK_DETAIL
;
import
static
com
.
tykj
.
dev
.
misc
.
base
.
BusinessEnum
.
CONFIRM_CHECK_DETAIL
;
import
static
com
.
tykj
.
dev
.
misc
.
base
.
BusinessEnum
.
CONFIRM_CHECK_STAT
;
import
static
com
.
tykj
.
dev
.
misc
.
base
.
BusinessEnum
.
CONFIRM_CHECK_STAT
;
...
@@ -71,7 +73,7 @@ import static java.util.stream.Collectors.*;
...
@@ -71,7 +73,7 @@ import static java.util.stream.Collectors.*;
@RestController
@RestController
@RequestMapping
(
value
=
"/check/confirm"
)
@RequestMapping
(
value
=
"/check/confirm"
)
@AutoDocument
@AutoDocument
@Transactional
(
rollbackFor
=
Exception
.
class
)
//
@Transactional(rollbackFor = Exception.class)
@Slf4j
@Slf4j
@Api
(
tags
=
"核查模块"
,
description
=
"核查模块"
,
position
=
1
)
@Api
(
tags
=
"核查模块"
,
description
=
"核查模块"
,
position
=
1
)
public
class
DeviceCheckController
{
public
class
DeviceCheckController
{
...
@@ -93,6 +95,8 @@ public class DeviceCheckController {
...
@@ -93,6 +95,8 @@ public class DeviceCheckController {
@Autowired
@Autowired
private
DeviceCheckDetailDao
detailRepo
;
private
DeviceCheckDetailDao
detailRepo
;
@Autowired
@Autowired
private
DeviceLibraryCacheService
dcService
;
@Autowired
private
ObjTransUtil
transUtil
;
private
ObjTransUtil
transUtil
;
@Autowired
@Autowired
private
TaskDao
taskRepo
;
private
TaskDao
taskRepo
;
...
@@ -107,7 +111,11 @@ public class DeviceCheckController {
...
@@ -107,7 +111,11 @@ public class DeviceCheckController {
@Autowired
@Autowired
private
ConfirmCheckService
ccService
;
private
ConfirmCheckService
ccService
;
@Autowired
@Autowired
private
UserService
userService
;
@Autowired
private
MyWebSocket
myWebSocket
;
private
MyWebSocket
myWebSocket
;
@Autowired
private
SelfCheckController
selfCheckController
;
@GetMapping
(
"/area/{fatherId}"
)
@GetMapping
(
"/area/{fatherId}"
)
@ApiOperation
(
value
=
"查询指定区域下的所有区域信息"
)
@ApiOperation
(
value
=
"查询指定区域下的所有区域信息"
)
...
@@ -135,7 +143,6 @@ public class DeviceCheckController {
...
@@ -135,7 +143,6 @@ public class DeviceCheckController {
return
statVoList
;
return
statVoList
;
}
}
@ApiOperation
(
value
=
"根据关键字分页查询核查统计数据"
)
@ApiOperation
(
value
=
"根据关键字分页查询核查统计数据"
)
@PostMapping
(
"/stat"
)
@PostMapping
(
"/stat"
)
public
Page
<
CheckStatTableVo
>
findStatByKeyword
(
public
Page
<
CheckStatTableVo
>
findStatByKeyword
(
...
@@ -191,7 +198,6 @@ public class DeviceCheckController {
...
@@ -191,7 +198,6 @@ public class DeviceCheckController {
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
cdVo
));
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
cdVo
));
}
}
/**
/**
* 该接口负责处理以下跳转情况
* 该接口负责处理以下跳转情况
* 1 - 统计跳转
* 1 - 统计跳转
...
@@ -222,16 +228,30 @@ public class DeviceCheckController {
...
@@ -222,16 +228,30 @@ public class DeviceCheckController {
List
<
LinkCheckDetail
>
lcdList
=
new
ArrayList
<>();
List
<
LinkCheckDetail
>
lcdList
=
new
ArrayList
<>();
List
<
LinkExamDetail
>
ledList
=
new
ArrayList
<>();
List
<
LinkExamDetail
>
ledList
=
new
ArrayList
<>();
// if else 结果 1.核查页面(市检查and省直属单位自查) 2.检查页面 (均为单位自查)
// check type = 0 核查页面 看见的是市检查与省直属自查
// check type = 0 核查页面 看见的是市检查与省直属自查
if
(
ctVo
.
getCheckType
()
==
0
)
{
if
(
ctVo
.
getCheckType
()
==
0
)
{
linkVo
.
setType
(
1
);
linkVo
.
setType
(
1
);
// 根据tpye和billId找到父级节点 - 默认了最顶级的省核查节点应当为一个
// 根据tpye和billId找到父级节点 - 默认了最顶级的省核查节点应当为一个
Task
rootTask
=
taskRepo
.
findAllByBillIdAndBusinessType
(
billId
,
type
).
get
(
0
);
Task
rootTask
=
taskRepo
.
findAllByBillIdAndBusinessType
(
billId
,
type
).
get
(
0
);
// 先检出所有类型为7或者8的Task集合 方便后续操作
Specification
<
Task
>
pred
=
Specifications
.<
Task
>
and
()
.
in
(
"businessType"
,
7
,
8
)
.
build
();
List
<
Task
>
cacheTask
=
taskRepo
.
findAll
(
pred
);
//key = parentId , value childList
Map
<
Integer
,
List
<
Task
>>
parentTaskMap
=
cacheTask
.
stream
()
.
collect
(
groupingBy
(
Task:
:
getParentTaskId
));
// 找到所有的子节点
// 找到所有的子节点
List
<
Task
>
childTask
=
taskRepo
.
findAllByParentTaskId
(
rootTask
.
getId
());
List
<
Task
>
childTask
=
parentTaskMap
.
get
(
rootTask
.
getId
());
long
startTime
=
System
.
currentTimeMillis
();
long
startTime
=
System
.
currentTimeMillis
();
long
finalTime
=
System
.
currentTimeMillis
();
long
finalTime
=
System
.
currentTimeMillis
();
for
(
Task
child
:
childTask
)
{
for
(
Task
child
:
childTask
)
{
// 将子节点任务中的 统计数据确认任务 给过滤掉
// 将子节点任务中的 统计数据确认任务 给过滤掉
if
(
child
.
getTitle
().
contains
(
"统计数据确认任务"
))
{
if
(
child
.
getTitle
().
contains
(
"统计数据确认任务"
))
{
...
@@ -251,8 +271,12 @@ public class DeviceCheckController {
...
@@ -251,8 +271,12 @@ public class DeviceCheckController {
DeviceCheckStat
cdc
=
statRepo
.
findById
(
child
.
getBillId
()).
get
();
DeviceCheckStat
cdc
=
statRepo
.
findById
(
child
.
getBillId
()).
get
();
CheckStatVo
cdcVo
=
transUtil
.
checkStatDo2Vo
(
cdc
);
CheckStatVo
cdcVo
=
transUtil
.
checkStatDo2Vo
(
cdc
);
//todo 这里更改从detail中去查看并求和
//todo 这里更改从detail中去查看并求和
//找到chilid的子child detail 并求和
//找到chilid的子child detail 并求和 ccTask即为所有的自查任务集合
List
<
Task
>
cctask
=
taskRepo
.
findAllByParentTaskId
(
child
.
getId
());
List
<
Task
>
cctask
=
parentTaskMap
.
get
(
child
.
getId
());
if
(
Objects
.
isNull
(
cctask
)){
cctask
=
new
ArrayList
<>();
}
List
<
CheckAreaStatVo
>
totalList
=
new
ArrayList
<>();
List
<
CheckAreaStatVo
>
totalList
=
new
ArrayList
<>();
...
@@ -266,11 +290,11 @@ public class DeviceCheckController {
...
@@ -266,11 +290,11 @@ public class DeviceCheckController {
.
collect
(
toList
());
.
collect
(
toList
());
totalList
.
addAll
(
casList
);
totalList
.
addAll
(
casList
);
}
}
//
String
areaName
=
auService
.
findOne
(
AuExample
.
UnitId
,
child
.
getOwnUnit
()).
getName
();
String
areaName
=
auService
.
findOne
(
AuExample
.
UnitId
,
child
.
getOwnUnit
()).
getName
();
CheckAreaStatVo
cas
=
combineCaList
(
totalList
,
areaName
);
//
LinkCheckDetail
lcd
=
cas2lcd
(
totalList
,
child
,
cctask
,
areaName
);
LinkCheckDetail
lcd
=
rev2lcd
(
child
,
endTime
,
updateTime
,
cas
.
reverse
());
lcd
.
setCheckUnit
(
unitName
);
lcd
.
setCheckUnit
(
unitName
);
if
(
child
.
getTitle
().
contains
(
"统计确认待办任务"
))
{
if
(
child
.
getTitle
().
contains
(
"统计确认待办任务"
))
{
lcd
.
setCheckSituation
(
"统计确认待办任务"
);
lcd
.
setCheckSituation
(
"统计确认待办任务"
);
...
@@ -300,16 +324,13 @@ public class DeviceCheckController {
...
@@ -300,16 +324,13 @@ public class DeviceCheckController {
if
(
casList
.
isEmpty
())
{
if
(
casList
.
isEmpty
())
{
cas
=
new
CheckAreaStatVo
(
"默认地区"
,
0
,
0
,
0
,
0
,
0
,
0
);
cas
=
new
CheckAreaStatVo
(
"默认地区"
,
0
,
0
,
0
,
0
,
0
,
0
);
}
else
{
}
else
{
cas
=
combineCaList
(
casList
,
unitName
);
// cas = combineCaList(casList, unitName);
cas
=
casList
.
get
(
0
);
}
}
// CheckAreaStatVo cas = parseStatString2Vo(child.parse2Bto(), childDetail).stream()
// LinkExamDetail led = rev2led(child, endTime, updateTime, cas.reverse());
// .map(CheckDeviceStatVo::getAreaStatList)
LinkExamDetail
led
=
cas2led
(
cas
,
child
,
endTime
,
updateTime
);
// .flatMap(checkAreaStatVos -> checkAreaStatVos.stream())
// .reduce(CheckAreaStatVo::combine)
// .orElse(new CheckAreaStatVo("默认地区", 0, 0, 0, 0, 0, 0));
LinkExamDetail
led
=
rev2led
(
child
,
endTime
,
updateTime
,
cas
.
reverse
());
led
.
setCheckUnit
(
unitName
);
led
.
setCheckUnit
(
unitName
);
ledList
.
add
(
led
);
ledList
.
add
(
led
);
...
@@ -356,34 +377,7 @@ public class DeviceCheckController {
...
@@ -356,34 +377,7 @@ public class DeviceCheckController {
int
i
=
0
;
int
i
=
0
;
for
(
Task
child
:
childTask
)
{
for
(
Task
child
:
childTask
)
{
Integer
childBusType
=
child
.
getBusinessType
();
LinkExamDetail
led
=
getLed
(
endTime
,
updateTime
,
child
);
Integer
childBusId
=
child
.
getBillId
();
DeviceCheckDetail
childDetail
=
detailRepo
.
findById
(
childBusId
).
get
();
String
unitName
=
childDetail
.
getCheckUnit
();
List
<
CheckAreaStatVo
>
casList
=
parseStatString2Vo
(
child
.
parse2Bto
(),
childDetail
).
stream
()
.
map
(
CheckDeviceStatVo:
:
getAreaStatList
)
.
flatMap
(
checkAreaStatVos
->
checkAreaStatVos
.
stream
())
.
collect
(
toList
());
//自查的areaName要从detail里找
String
areaName
=
childDetail
.
getCheckUnit
();
CheckAreaStatVo
cas
;
if
(
casList
.
isEmpty
())
{
cas
=
new
CheckAreaStatVo
(
"默认地区"
,
0
,
0
,
0
,
0
,
0
,
0
);
}
else
{
cas
=
combineCaList
(
casList
,
areaName
);
}
//
// CheckAreaStatVo cas = parseStatString2Vo(child.parse2Bto(), childDetail).stream()
// .map(CheckDeviceStatVo::getAreaStatList)
// .flatMap(checkAreaStatVos -> checkAreaStatVos.stream())
// .reduce(CheckAreaStatVo::combine)
// .get();
LinkExamDetail
led
=
rev2led
(
child
,
endTime
,
updateTime
,
cas
.
reverse
());
led
.
setCheckUnit
(
unitName
);
//设置名称
//设置名称
led
.
setExamName
(
groupNames
.
get
(
i
));
led
.
setExamName
(
groupNames
.
get
(
i
));
...
@@ -409,128 +403,207 @@ public class DeviceCheckController {
...
@@ -409,128 +403,207 @@ public class DeviceCheckController {
}
}
//进行了更新 使用修改时间去做是否逾期判断
@NotNull
private
LinkCheckDetail
rev2lcd
(
Task
task
,
LocalDateTime
endTime
,
LocalDateTime
updateTime
,
RevAreaStat
revAreaStat
)
{
private
LinkExamDetail
getLed
(
LocalDateTime
endTime
,
LocalDateTime
updateTime
,
Task
child
)
{
Integer
childBusType
=
child
.
getBusinessType
();
Integer
childBusId
=
child
.
getBillId
();
DeviceCheckDetail
childDetail
=
detailRepo
.
findById
(
childBusId
).
get
();
String
unitName
=
childDetail
.
getCheckUnit
();
List
<
CheckAreaStatVo
>
casList
=
parseStatString2Vo
(
child
.
parse2Bto
(),
childDetail
).
stream
()
.
map
(
CheckDeviceStatVo:
:
getAreaStatList
)
.
flatMap
(
checkAreaStatVos
->
checkAreaStatVos
.
stream
())
.
collect
(
toList
());
//自查的areaName要从detail里找
String
areaName
=
childDetail
.
getCheckUnit
();
CheckAreaStatVo
cas
;
if
(
casList
.
isEmpty
())
{
cas
=
new
CheckAreaStatVo
(
"默认地区"
,
0
,
0
,
0
,
0
,
0
,
0
);
}
else
{
cas
=
casList
.
get
(
0
);
}
LinkExamDetail
led
=
cas2led
(
cas
,
child
,
endTime
,
updateTime
);
led
.
setCheckUnit
(
unitName
);
return
led
;
}
/**
* lcd 里的列表都为检查,因此是集合对
*
* @return
*/
private
LinkCheckDetail
cas2lcd
(
List
<
CheckAreaStatVo
>
casList
,
Task
task
,
List
<
Task
>
detailTasks
,
String
finalCityName
)
{
LinkCheckDetail
lcd
=
new
LinkCheckDetail
();
LinkCheckDetail
lcd
=
new
LinkCheckDetail
();
lcd
.
setId
(
task
.
getBillId
());
lcd
.
setId
(
task
.
getBillId
());
String
finalSituation
=
""
;
//核查情况 无误/有误/逾期
// 核查结果的判断具体细节可以查看 docs/confirmCheck.md文档
if
(
revAreaStat
.
getComSituation
()
==
-
1
)
{
List
<
String
>
situationList
=
detailTasks
.
stream
()
lcd
.
setCheckSituation
(
"重新检查"
);
.
map
(
this
::
getDetailSituation
)
}
else
if
(
revAreaStat
.
getComSituation
()
==
1
)
{
.
collect
(
toList
());
lcd
.
setCheckSituation
(
"有误"
);
}
else
if
(
revAreaStat
.
getComSituation
()
==
0
)
{
// 如果 size = 0 或全都是 无 ,则无
if
(
revAreaStat
.
getComProgress
()
==
0
)
{
if
(
situationList
.
size
()
==
0
){
lcd
.
setCheckSituation
(
"无"
);
finalSituation
=
"无"
;
}
else
{
}
else
{
lcd
.
setCheckSituation
(
"无误"
);
boolean
allIsNothing
=
situationList
.
stream
().
allMatch
(
s
->
s
.
equals
(
"无"
));
if
(
allIsNothing
)
{
finalSituation
=
"无"
;
}
//如果 有任意一个区状态是待审核
boolean
anyIsAudit
=
situationList
.
stream
().
anyMatch
(
s
->
s
.
equals
(
"等待市审核"
));
if
(
anyIsAudit
)
{
finalSituation
=
"等待市审核"
;
}
//如果 全都是 完成,那么是完成
boolean
allIsFinish
=
situationList
.
stream
().
allMatch
(
s
->
s
.
equals
(
"完成"
));
if
(
allIsFinish
)
{
finalSituation
=
"完成"
;
}
// 其他情况,则是进行中
if
(
StringUtils
.
isEmpty
(
finalSituation
))
{
finalSituation
=
"进行中"
;
}
}
}
else
{
lcd
.
setCheckSituation
(
"异常"
);
}
}
lcd
.
setCheckSituation
(
finalSituation
);
//核查结果
// 核查情况 所有子任务都是初始状态 = 无 10=未
// if (endTime.isBefore(LocalDateTime.now())) {
String
checkReuslt
=
""
;
// if (revAreaStat.getComProgress() ==1){
boolean
allIsInit
=
detailTasks
.
stream
()
// lcd.setCheckResult("逾期进行中");
.
allMatch
(
t
->
t
.
getBillStatus
().
equals
(
CHECK_DETAIL_CITY_0
.
id
)
||
t
.
getBillStatus
().
equals
(
CHECK_DETAIL_REGION_0
.
id
));
// }else if (task.getBillStatus() != 9999 || revAreaStat.getComProgress() != 2) {
// lcd.setCheckResult("逾期");
if
(
allIsInit
)
{
// } else {
checkReuslt
=
"无"
;
// lcd.setCheckResult("逾期完成");
}
else
{
// }
// 任意一个是10则是待审核
// } else {
boolean
waitAudit
=
casList
.
stream
()
if
(
task
.
getBillStatus
()
==
9999
)
{
.
anyMatch
(
cas
->
cas
.
getComSituation
()
==
10
);
// if (endTime.isBefore(LocalDateTime.now())) {
// lcd.setCheckResult("逾期完成");
boolean
notPassed
=
casList
.
stream
()
// }
.
anyMatch
(
cas
->
cas
.
getComSituation
()
==
13
);
if
(
endTime
.
isBefore
(
updateTime
))
{
lcd
.
setCheckResult
(
"逾期完成"
);
// 需要每一个城市都有无误(即12) 才算无误
}
else
{
Map
<
String
,
List
<
CheckAreaStatVo
>>
map
=
casList
.
stream
()
lcd
.
setCheckResult
(
"完成"
);
.
collect
(
groupingBy
(
CheckAreaStatVo:
:
getAreaName
));
long
okCount
=
0
;
for
(
List
<
CheckAreaStatVo
>
vos
:
map
.
values
())
{
boolean
containsOk
=
vos
.
stream
()
.
anyMatch
(
checkAreaStatVo
->
checkAreaStatVo
.
getComSituation
()
==
12
);
if
(
containsOk
){
okCount
++;
}
}
}
}
else
if
(
revAreaStat
.
getComProgress
()
==
3
)
{
lcd
.
setCheckResult
(
"已退回"
);
boolean
allOk
=
okCount
>=
map
.
size
();
}
else
if
(
revAreaStat
.
getComProgress
()
==
0
)
{
lcd
.
setCheckResult
(
"未开始"
);
if
(
waitAudit
)
{
}
else
if
(
revAreaStat
.
getComProgress
()
==
1
)
{
checkReuslt
=
"等待省审核"
;
lcd
.
setCheckResult
(
"进行中"
);
}
else
if
(
allOk
)
{
}
else
if
(
revAreaStat
.
getComProgress
()
==
2
&&
task
.
getBillStatus
()
%
10
==
0
)
{
checkReuslt
=
"无误"
;
lcd
.
setCheckResult
(
"进行中"
);
}
else
if
(
notPassed
)
{
}
else
if
(
revAreaStat
.
getComProgress
()
==
2
&&
task
.
getBillStatus
()
%
10
==
1
)
{
checkReuslt
=
"未通过"
;
lcd
.
setCheckResult
(
"进行中"
);
}
else
if
(
revAreaStat
.
getComProgress
()
==
2
)
{
// if (endTime.isBefore(LocalDateTime.now())) {
// lcd.setCheckResult("逾期完成");
// }
if
(
endTime
.
isBefore
(
updateTime
))
{
lcd
.
setCheckResult
(
"逾期完成"
);
}
else
{
}
else
{
lcd
.
setCheckResult
(
"完成"
)
;
checkReuslt
=
"进行中"
;
}
}
}
}
lcd
.
setCheckResult
(
checkReuslt
);
//核查单位名
lcd
.
setCheckUnit
(
finalCityName
+
"局"
);
lcd
.
setCheckUnit
(
revAreaStat
.
getAreaName
()
+
"局"
);
//备注判断 新增缺失
lcd
.
setRemark
(
revAreaStat
.
getActualCount
()
-
revAreaStat
.
getSupposeCount
());
return
lcd
;
return
lcd
;
}
@GetMapping
(
"/test/test"
)
private
String
justForTest
()
{
CheckChart
.
taskStatus2Situation
.
forEach
((
k
,
v
)
->
System
.
out
.
println
(
v
));
return
"test"
;
}
}
//修改
private
LinkExamDetail
rev2led
(
Task
task
,
LocalDateTime
endTime
,
LocalDateTime
updateTime
,
RevAreaStat
revAreaStat
)
{
/**
* 获得自查的核查情况
*/
private
String
getDetailSituation
(
Task
task
)
{
Integer
taskStatus
=
task
.
getBillStatus
();
String
situation
=
CheckChart
.
taskStatus2Situation
.
get
(
taskStatus
);
// 无的情况要分两种 一种是初始的无 一种是重做导致的无 通过判断task的remark
String
remark
=
task
.
getRemark
();
if
(
situation
.
equals
(
"无"
))
{
if
(
Objects
.
nonNull
(
remark
)
&&
remark
.
contains
(
"ROLLBACK"
))
{
situation
=
"未通过"
;
}
}
return
situation
;
}
/**
* led 里的列表都为自查,因此都是单个对象
*
* @return
*/
private
LinkExamDetail
cas2led
(
CheckAreaStatVo
cas
,
Task
task
,
LocalDateTime
endTime
,
LocalDateTime
updateTime
)
{
LinkExamDetail
led
=
new
LinkExamDetail
();
LinkExamDetail
led
=
new
LinkExamDetail
();
led
.
setId
(
task
.
getBillId
());
led
.
setId
(
task
.
getBillId
());
int
comProgress
=
cas
.
getComProgress
();
int
comSituation
=
cas
.
getComSituation
();
//核查情况 重新检查/无误/有误/逾期
// 核查情况依照 新的与task status来对应 详情可以查看docs/confirmcheck.md里的对应表 对照表
if
(
revAreaStat
.
getComSituation
()
==
-
1
)
{
led
.
setCheckSituation
(
"重新检查"
);
String
situation
=
getDetailSituation
(
task
);
}
else
if
(
revAreaStat
.
getComSituation
()
==
1
)
{
// 逾期的处理,只在完成的那一步才判断
led
.
setCheckSituation
(
"有误"
);
if
(
situation
.
equals
(
"完成"
)
&&
updateTime
.
isAfter
(
endTime
))
{
}
else
if
(
revAreaStat
.
getComSituation
()
==
0
)
{
situation
=
"逾期完成"
;
if
(
revAreaStat
.
getComProgress
()
==
0
)
{
led
.
setCheckSituation
(
"无"
);
}
else
{
led
.
setCheckSituation
(
"无误"
);
}
}
else
{
led
.
setCheckSituation
(
"异常"
);
}
}
led
.
setCheckSituation
(
situation
);
//核查结果
String
checkResult
=
""
;
if
(
task
.
getBillStatus
()
==
9999
)
{
String
remark
=
task
.
getRemark
();
// if (endTime.isBefore(LocalDateTime.now())) {
// 核查结果
// led.setCheckResult("逾期完成");
if
(!
situation
.
contains
(
"完成"
))
{
// }
checkResult
=
"无"
;
if
(
endTime
.
isBefore
(
updateTime
))
{
}
else
{
led
.
setCheckResult
(
"逾期完成"
);
if
(
comSituation
==
10
)
{
}
else
{
// 再判断一下 是2级结构还是3级结构
led
.
setCheckResult
(
"完成"
);
Integer
rootId
=
taskService
.
findByTaskId
(
task
.
getParentTaskId
()).
getParentTaskId
();
}
boolean
isTwoLevel
=
rootId
==
null
||
rootId
==
0
;
}
else
if
(
revAreaStat
.
getComProgress
()
==
3
)
{
// 2级结构 - 发起人单位是省单位 则不变, 发起人市市单位则变为无
led
.
setCheckResult
(
"已退回"
);
if
(
isTwoLevel
){
}
else
if
(
revAreaStat
.
getComProgress
()
==
0
)
{
Integer
startUnitId
=
userService
.
findById
(
task
.
getCreateUserId
()).
getUnitsId
();
led
.
setCheckResult
(
"未开始"
);
if
(
startUnitId
!=
1
){
}
else
if
(
revAreaStat
.
getComProgress
()
==
1
)
{
checkResult
=
"无"
;
led
.
setCheckResult
(
"进行中"
);
}
else
{
}
else
if
(
revAreaStat
.
getComProgress
()
==
2
&&
task
.
getBillStatus
()
%
10
==
0
)
{
checkResult
=
"等待省审核"
;
led
.
setCheckResult
(
"进行中"
);
}
}
else
if
(
revAreaStat
.
getComProgress
()
==
2
&&
task
.
getBillStatus
()
%
10
==
1
)
{
}
else
{
led
.
setCheckResult
(
"进行中"
);
checkResult
=
"等待省审核"
;
}
else
if
(
revAreaStat
.
getComProgress
()
==
2
)
{
}
if
(
endTime
.
isBefore
(
updateTime
))
{
}
else
if
(
comSituation
==
12
)
{
led
.
setCheckResult
(
"逾期完成"
);
checkResult
=
"无误"
;
}
else
if
(
comSituation
==
13
)
{
int
redoTime
=
1
;
if
(
Objects
.
nonNull
(
remark
)
&&
remark
.
contains
(
"ROLLBACK"
))
{
redoTime
=
Integer
.
valueOf
(
remark
.
split
(
"-"
)[
1
]);
}
checkResult
=
redoTime
+
"次未通过"
;
}
else
{
}
else
{
led
.
setCheckResult
(
"完成"
)
;
checkResult
=
"状态异常"
;
}
}
}
}
led
.
setCheckResult
(
checkResult
);
//核查单位名
led
.
setCheckUnit
(
cas
.
getAreaName
()
+
"局"
);
led
.
setCheckUnit
(
revAreaStat
.
getAreaName
()
+
"局"
);
//备注判断 新增缺失
led
.
setRemark
(
revAreaStat
.
getActualCount
()
-
revAreaStat
.
getSupposeCount
());
return
led
;
return
led
;
}
}
...
@@ -587,7 +660,7 @@ public class DeviceCheckController {
...
@@ -587,7 +660,7 @@ public class DeviceCheckController {
Integer
provId
=
taskService
.
get
(
examJobId
).
getParentTaskId
();
Integer
provId
=
taskService
.
get
(
examJobId
).
getParentTaskId
();
// 检查的job id 找到 father 进而找到 father的billid 进而找到title Id
// 检查的job id 找到 father 进而找到 father的billid 进而找到title Id
Integer
statId
=
taskService
.
get
(
provId
).
getBillId
();
Integer
statId
=
taskService
.
get
(
provId
).
getBillId
();
DeviceCheckStat
deviceCheckStat
=
statRepo
.
getOne
(
statId
);
DeviceCheckStat
deviceCheckStat
=
statRepo
.
findById
(
statId
).
get
(
);
String
title
=
deviceCheckStat
.
getTitle
();
String
title
=
deviceCheckStat
.
getTitle
();
String
remark
=
deviceCheckStat
.
getRemark
();
String
remark
=
deviceCheckStat
.
getRemark
();
return
ResponseEntity
.
ok
(
new
CheckTitleAndTimeVo
(
title
,
deviceCheckStat
.
getEndTime
(),
remark
));
return
ResponseEntity
.
ok
(
new
CheckTitleAndTimeVo
(
title
,
deviceCheckStat
.
getEndTime
(),
remark
));
...
@@ -617,8 +690,8 @@ public class DeviceCheckController {
...
@@ -617,8 +690,8 @@ public class DeviceCheckController {
@ApiOperation
(
value
=
"检查地区是否发起核查"
,
notes
=
"检查地区是否发起核查"
)
@ApiOperation
(
value
=
"检查地区是否发起核查"
,
notes
=
"检查地区是否发起核查"
)
@PostMapping
(
"/checkPossible"
)
@PostMapping
(
"/checkPossible"
)
public
ResponseEntity
checkPossible
(
@RequestBody
UnitIds
u
uid
)
{
public
ResponseEntity
checkPossible
(
@RequestBody
UnitIds
u
nitIds
)
{
List
<
String
>
unitNames
=
u
uid
.
getIds
().
stream
()
List
<
String
>
unitNames
=
u
nitIds
.
getIds
().
stream
()
.
map
(
id
->
auService
.
findOne
(
AuExample
.
UnitId
,
id
))
.
map
(
id
->
auService
.
findOne
(
AuExample
.
UnitId
,
id
))
.
map
(
AreaUnit:
:
getUnitName
)
.
map
(
AreaUnit:
:
getUnitName
)
.
collect
(
toList
());
.
collect
(
toList
());
...
@@ -720,8 +793,23 @@ public class DeviceCheckController {
...
@@ -720,8 +793,23 @@ public class DeviceCheckController {
for
(
Units
unit
:
selfCheckUnits
)
{
for
(
Units
unit
:
selfCheckUnits
)
{
//核查组成员名称用当前登录用户
//核查组成员名称用当前登录用户
String
names
=
loginUser
.
getName
();
String
names
=
loginUser
.
getName
();
// 如果是市level=2 的话,father Id为市的检查id
Integer
fatherId
=
0
;
Integer
initStatusId
=
0
;
// level = 2 市级 否则 区级 ,市级的自查初始状态160,区级的自查初始状态140
if
(
unit
.
getLevel
()
==
2
)
{
fatherId
=
cityExamIdMap
.
get
(
unit
.
getUnitId
());
initStatusId
=
CHECK_DETAIL_CITY_0
.
id
;
}
else
{
fatherId
=
provStatTask
.
getId
();
initStatusId
=
CHECK_DETAIL_REGION_0
.
id
;
}
// 3-1 构建被查单位的 自查账单
// 3-1 构建被查单位的 自查账单
DeviceCheckDetail
unitDetailDoc
=
DeviceCheckDetail
.
EmptyWithChecker
(
names
+
"|"
+
"默认备注"
,
ccVO
.
getRemark
(),
0
,
0
,
0
,
0
,
unit
.
getName
(),
devInLib
.
getOrDefault
(
unit
.
getName
(),
new
ArrayList
<>()),
devNotInLib
.
getOrDefault
(
unit
.
getName
(),
new
ArrayList
<>()));
DeviceCheckDetail
unitDetailDoc
=
DeviceCheckDetail
.
EmptyWithChecker
(
names
+
"|"
+
"默认备注"
,
ccVO
.
getRemark
(),
0
,
0
,
0
,
0
,
unit
.
getName
(),
devInLib
.
getOrDefault
(
unit
.
getName
(),
new
ArrayList
<>()),
devNotInLib
.
getOrDefault
(
unit
.
getName
(),
new
ArrayList
<>()));
unitDetailDoc
.
setVar2
(
String
.
valueOf
(
initStatusId
));
DeviceCheckDetail
detail
=
detailRepo
.
save
(
unitDetailDoc
);
DeviceCheckDetail
detail
=
detailRepo
.
save
(
unitDetailDoc
);
// 将id放入统计中去 model -> areaName -> detailId
// 将id放入统计中去 model -> areaName -> detailId
String
areaName
=
auService
.
findOne
(
AuExample
.
UnitId
,
unit
.
getUnitId
()).
getName
();
String
areaName
=
auService
.
findOne
(
AuExample
.
UnitId
,
unit
.
getUnitId
()).
getName
();
...
@@ -735,13 +823,6 @@ public class DeviceCheckController {
...
@@ -735,13 +823,6 @@ public class DeviceCheckController {
}
}
// 3-2 构建被查单位的 自查任务 (根据被查单位的级别来区分是县级状态是市级状态) 这里的父级任务应该是省统计
// 3-2 构建被查单位的 自查任务 (根据被查单位的级别来区分是县级状态是市级状态) 这里的父级任务应该是省统计
// 如果是市level=2 的话,father Id为市的检查id
Integer
fatherId
=
0
;
if
(
unit
.
getLevel
()
==
2
)
{
fatherId
=
cityExamIdMap
.
get
(
unit
.
getUnitId
());
}
else
{
fatherId
=
provStatTask
.
getId
();
}
//处理ownUnit的代码 - 用于处理没有账号的单位的可见性
//处理ownUnit的代码 - 用于处理没有账号的单位的可见性
Integer
ownUnitId
=
0
;
Integer
ownUnitId
=
0
;
...
@@ -751,7 +832,7 @@ public class DeviceCheckController {
...
@@ -751,7 +832,7 @@ public class DeviceCheckController {
ownUnitId
=
unit
.
getUnitId
();
ownUnitId
=
unit
.
getUnitId
();
}
}
TaskBto
checkedTask
=
new
TaskBto
(
CHECK_EXAM_DETAIL_0
.
i
d
,
unit
.
getName
()
+
"自核查任务"
,
fatherId
,
addNode
(
provStatTask
.
getNodeIdDetail
(),
provStatTask
.
getId
()),
CONFIRM_CHECK_DETAIL
.
id
,
detail
.
getId
(),
ownUnitId
,
0
);
TaskBto
checkedTask
=
new
TaskBto
(
initStatusI
d
,
unit
.
getName
()
+
"自核查任务"
,
fatherId
,
addNode
(
provStatTask
.
getNodeIdDetail
(),
provStatTask
.
getId
()),
CONFIRM_CHECK_DETAIL
.
id
,
detail
.
getId
(),
ownUnitId
,
0
);
checkedTask
.
setCustomInfo
(
"manual"
);
checkedTask
.
setCustomInfo
(
"manual"
);
taskService
.
start
(
checkedTask
);
taskService
.
start
(
checkedTask
);
}
}
...
@@ -786,12 +867,15 @@ public class DeviceCheckController {
...
@@ -786,12 +867,15 @@ public class DeviceCheckController {
}
}
List
<
String
>
tmpString
=
new
ArrayList
<>();
List
<
String
>
tmpString
=
new
ArrayList
<>();
// 拼接检查组和检查组成员
for
(
CheckExamDetailVo
vo
:
examDetailVos
)
{
for
(
CheckExamDetailVo
vo
:
examDetailVos
)
{
tmpString
.
add
(
vo
.
getGroupName
()
+
","
+
vo
.
getUserNames
().
stream
().
collect
(
joining
(
","
)));
for
(
Integer
u
:
vo
.
getUnitIds
())
{
tmpString
.
add
(
vo
.
getGroupName
()
+
","
+
vo
.
getUserNames
().
stream
().
collect
(
joining
(
","
)));
}
}
}
String
groupUserString
=
tmpString
.
stream
().
collect
(
joining
(
"|"
));
String
groupUserString
=
tmpString
.
stream
().
collect
(
joining
(
"|"
));
List
<
Integer
>
unitIds
=
examDetailVos
.
stream
().
map
(
CheckExamDetailVo:
:
getUnitId
).
collect
(
toList
());
List
<
Integer
>
unitIds
=
examDetailVos
.
stream
().
flatMap
(
cv
->
cv
.
getUnitIds
().
stream
()
).
collect
(
toList
());
List
<
Units
>
checkedUnits
=
unitsRepo
.
findAllById
(
unitIds
);
List
<
Units
>
checkedUnits
=
unitsRepo
.
findAllById
(
unitIds
);
List
<
String
>
checkedUnitNames
=
checkedUnits
.
stream
().
map
(
Units:
:
getName
).
collect
(
toList
());
List
<
String
>
checkedUnitNames
=
checkedUnits
.
stream
().
map
(
Units:
:
getName
).
collect
(
toList
());
...
@@ -824,7 +908,7 @@ public class DeviceCheckController {
...
@@ -824,7 +908,7 @@ public class DeviceCheckController {
if
(
ceVo
.
getExamStatId
()
==
0
)
{
if
(
ceVo
.
getExamStatId
()
==
0
)
{
cityStatTask
=
new
Task
(
CHECK_EXAM_STAT_1
.
id
,
CHECK_EXAM_STAT_0
.
name
,
0
,
".0."
,
CONFIRM_CHECK_STAT
.
id
,
statId
,
startUnitId
)
cityStatTask
=
new
Task
(
CHECK_EXAM_STAT_1
.
id
,
CHECK_EXAM_STAT_0
.
name
,
0
,
".0."
,
CONFIRM_CHECK_STAT
.
id
,
statId
,
startUnitId
)
.
parse2Bto
();
.
parse2Bto
();
cityStatTask
.
setRemark
(
String
.
valueOf
(
CHECK_EXAM_STAT_1
.
id
));
//
cityStatTask.setRemark(String.valueOf(CHECK_EXAM_STAT_1.id));
cityStatTask
.
setCustomInfo
(
"exam"
);
cityStatTask
.
setCustomInfo
(
"exam"
);
cityStatTask
.
getInvolveUserIdList
().
add
(
currentUserId
);
cityStatTask
.
getInvolveUserIdList
().
add
(
currentUserId
);
// 检查变为待办
// 检查变为待办
...
@@ -836,7 +920,7 @@ public class DeviceCheckController {
...
@@ -836,7 +920,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
(
0
);
cityStatTask
.
getInvolveUserIdList
().
add
(
0
);
cityStatTask
.
setRemark
(
String
.
valueOf
(
CHECK_EXAM_STAT_1
.
id
));
//
cityStatTask.setRemark(String.valueOf(CHECK_EXAM_STAT_1.id));
cityStatTask
.
setCustomInfo
(
"exam"
);
cityStatTask
.
setCustomInfo
(
"exam"
);
cityStatTask
.
setCurrentPoint
(
cityStatTask
.
getCurrentPoint
()
+
1
);
cityStatTask
.
setCurrentPoint
(
cityStatTask
.
getCurrentPoint
()
+
1
);
cityStatTask
.
setCreateUserId
(
currentUserId
);
cityStatTask
.
setCreateUserId
(
currentUserId
);
...
@@ -859,31 +943,56 @@ public class DeviceCheckController {
...
@@ -859,31 +943,56 @@ public class DeviceCheckController {
// 3. 构建被核查单位的详情账单与Task
// 3. 构建被核查单位的详情账单与Task
// 对每个需要核查的单位构建其detail账单与task
// 对每个需要核查的单位构建其detail账单与task
boolean
isProvUser
=
authenticationUtils
.
getAuthentication
()
.
getCurrentUserInfo
().
getUnitsId
()
==
1
;
for
(
CheckExamDetailVo
ed
:
examDetailVos
)
{
for
(
CheckExamDetailVo
ed
:
examDetailVos
)
{
Units
unit
=
unitsRepo
.
findById
(
ed
.
getUnitId
()).
get
();
List
<
Integer
>
uid
=
ed
.
getUnitIds
();
String
names
=
ed
.
getUserNames
().
stream
().
collect
(
joining
(
","
));
for
(
Integer
u
:
uid
)
{
// 3-1 构建被查单位的 自查账单
DeviceCheckDetail
unitDetailDoc
=
DeviceCheckDetail
.
EmptyWithChecker
(
names
+
"|"
+
ed
.
getRemark
(),
ceVo
.
getTitle
()
+
"%^&"
+
ed
.
getRemark
(),
0
,
0
,
0
,
0
,
unit
.
getName
(),
devInLib
.
getOrDefault
(
unit
.
getName
(),
new
ArrayList
<>()),
devNotInLib
.
getOrDefault
(
unit
.
getName
(),
new
ArrayList
<>()));
Units
unit
=
unitsRepo
.
findById
(
u
).
get
();
DeviceCheckDetail
detail
=
detailRepo
.
save
(
unitDetailDoc
);
String
names
=
ed
.
getUserNames
().
stream
().
collect
(
joining
(
","
));
detailIds
.
add
(
detail
.
getId
());
// 将id放入统计中去 model -> areaName -> detailId
// 根据发起人决定初始状态id 省发起人- 160 其他发起人 被查的市160 被查的是区140
String
areaName
=
auService
.
findOne
(
AuExample
.
UnitId
,
unit
.
getUnitId
()).
getName
();
int
initTaskStatusId
=
0
;
for
(
CheckDeviceStatVo
statVo
:
deviceStatVos
)
{
if
(
isProvUser
)
{
for
(
CheckAreaStatVo
asv
:
statVo
.
getAreaStatList
())
{
initTaskStatusId
=
CHECK_DETAIL_CITY_0
.
id
;
if
(
asv
.
getAreaName
().
equals
(
areaName
))
{
}
else
{
asv
.
setAreaStatId
(
statId
);
//再根据被查单位的级别 level = 3 区140 level =2市 160
asv
.
setAreaDetailId
(
detail
.
getId
());
if
(
unit
.
getLevel
()
==
3
)
{
initTaskStatusId
=
CHECK_DETAIL_REGION_0
.
id
;
}
else
{
initTaskStatusId
=
CHECK_DETAIL_CITY_0
.
id
;
}
}
// 3-1 构建被查单位的 自查账单
DeviceCheckDetail
unitDetailDoc
=
DeviceCheckDetail
.
EmptyWithChecker
(
names
+
"|"
+
ed
.
getRemark
(),
ceVo
.
getTitle
()
+
"%^&"
+
ed
.
getRemark
(),
0
,
0
,
0
,
0
,
unit
.
getName
(),
devInLib
.
getOrDefault
(
unit
.
getName
(),
new
ArrayList
<>()),
devNotInLib
.
getOrDefault
(
unit
.
getName
(),
new
ArrayList
<>()));
unitDetailDoc
.
setVar2
(
String
.
valueOf
(
initTaskStatusId
));
DeviceCheckDetail
detail
=
detailRepo
.
save
(
unitDetailDoc
);
detailIds
.
add
(
detail
.
getId
());
// 将id放入统计中去 model -> areaName -> detailId
String
areaName
=
auService
.
findOne
(
AuExample
.
UnitId
,
unit
.
getUnitId
()).
getName
();
for
(
CheckDeviceStatVo
statVo
:
deviceStatVos
)
{
for
(
CheckAreaStatVo
asv
:
statVo
.
getAreaStatList
())
{
if
(
asv
.
getAreaName
().
equals
(
areaName
))
{
asv
.
setAreaStatId
(
statId
);
asv
.
setAreaDetailId
(
detail
.
getId
());
}
}
}
}
}
// 3-2 构建被查单位的 自查任务 (根据被查单位的级别来区分是县级状态是市级状态)
TaskBto
checkedTask
=
new
TaskBto
(
initTaskStatusId
,
"自核查任务"
,
cityStatTask
.
getId
(),
addNode
(
cityStatTask
.
getNodeIdDetail
(),
cityStatTask
.
getId
()),
CONFIRM_CHECK_DETAIL
.
id
,
detail
.
getId
(),
unit
.
getUnitId
(),
0
);
// checkedTask.setRemark(String.valueOf(CHECK_EXAM_DETAIL_0.id));
checkedTask
.
setCustomInfo
(
"manual"
);
checkedTask
=
taskService
.
start
(
checkedTask
);
desBillMap
.
put
(
detail
.
getId
(),
ed
.
getRemark
());
desMap
.
put
(
checkedTask
.
getId
(),
ed
.
getRemark
());
}
}
// 3-2 构建被查单位的 自查任务 (根据被查单位的级别来区分是县级状态是市级状态)
TaskBto
checkedTask
=
new
TaskBto
(
CHECK_EXAM_DETAIL_0
.
id
,
"自核查任务"
,
cityStatTask
.
getId
(),
addNode
(
cityStatTask
.
getNodeIdDetail
(),
cityStatTask
.
getId
()),
CONFIRM_CHECK_DETAIL
.
id
,
detail
.
getId
(),
unit
.
getUnitId
(),
0
);
checkedTask
.
setRemark
(
String
.
valueOf
(
CHECK_EXAM_DETAIL_0
.
id
));
checkedTask
.
setCustomInfo
(
"manual"
);
checkedTask
=
taskService
.
start
(
checkedTask
);
desBillMap
.
put
(
detail
.
getId
(),
ed
.
getRemark
());
desMap
.
put
(
checkedTask
.
getId
(),
ed
.
getRemark
());
}
}
// 4. 重新设置并保存统计账单
// 4. 重新设置并保存统计账单
...
@@ -917,7 +1026,6 @@ public class DeviceCheckController {
...
@@ -917,7 +1026,6 @@ public class DeviceCheckController {
}
}
/**
/**
* 根据taskId查询Remark
* 根据taskId查询Remark
*/
*/
...
@@ -928,7 +1036,6 @@ public class DeviceCheckController {
...
@@ -928,7 +1036,6 @@ public class DeviceCheckController {
return
ResponseEntity
.
ok
(
desBillMap
.
get
(
billId
));
return
ResponseEntity
.
ok
(
desBillMap
.
get
(
billId
));
}
}
private
TaskBto
selectProvTask
(
Integer
taskId
)
{
private
TaskBto
selectProvTask
(
Integer
taskId
)
{
TaskBto
taskBto
=
taskService
.
get
(
taskId
);
TaskBto
taskBto
=
taskService
.
get
(
taskId
);
if
(
taskBto
.
getParentTaskId
()
==
0
)
{
if
(
taskBto
.
getParentTaskId
()
==
0
)
{
...
@@ -937,7 +1044,6 @@ public class DeviceCheckController {
...
@@ -937,7 +1044,6 @@ public class DeviceCheckController {
return
selectProvTask
(
taskBto
.
getParentTaskId
());
return
selectProvTask
(
taskBto
.
getParentTaskId
());
}
}
/**
/**
* 对于专员A来说的逻辑
* 对于专员A来说的逻辑
* 1. 修改detailString
* 1. 修改detailString
...
@@ -1049,11 +1155,12 @@ public class DeviceCheckController {
...
@@ -1049,11 +1155,12 @@ public class DeviceCheckController {
// 审核通过与不通过的逻辑不同
// 审核通过与不通过的逻辑不同
TaskBto
currentTask
=
taskService
.
get
(
id
,
CONFIRM_CHECK_DETAIL
.
id
);
TaskBto
currentTask
=
taskService
.
get
(
id
,
CONFIRM_CHECK_DETAIL
.
id
);
boolean
CEDStep1
=
currentTask
.
getBillStatus
().
equals
(
CHECK_DETAIL_
1
.
id
)
||
currentTask
.
getBillStatus
().
equals
(
CHECK_EXAM_DETAIL
_1
.
id
);
boolean
CEDStep1
=
currentTask
.
getBillStatus
().
equals
(
CHECK_DETAIL_
REGION_1
.
id
)
||
currentTask
.
getBillStatus
().
equals
(
CHECK_DETAIL_CITY
_1
.
id
);
if
(!
CEDStep1
)
{
if
(!
CEDStep1
)
{
return
ResponseEntity
.
status
(
400
).
body
(
new
ResultObj
<>(
String
.
format
(
"当前任务的状态异常!当前任务状态为 %s , 任务状态应该为 %s"
,
GlobalMap
.
getStatusEnumMap
().
get
(
currentTask
.
getBillStatus
()),
CHECK_DETAIL_1
.
name
)));
return
ResponseEntity
.
status
(
400
).
body
(
new
ResultObj
<>(
String
.
format
(
"当前任务的状态异常!当前任务状态为 %s , 任务状态应该为 %s"
,
GlobalMap
.
getStatusEnumMap
().
get
(
currentTask
.
getBillStatus
()),
CHECK_DETAIL_
REGION_
1
.
name
)));
}
}
DeviceCheckDetail
currentDetail
=
detailRepo
.
findById
(
id
).
get
();
if
(
checkStatus
==
1
)
{
if
(
checkStatus
==
1
)
{
// 只要通过了,且更新了详情结果,那么这里就进行一次更新
// 只要通过了,且更新了详情结果,那么这里就进行一次更新
if
(
isUpdate
==
1
)
{
if
(
isUpdate
==
1
)
{
...
@@ -1068,7 +1175,6 @@ public class DeviceCheckController {
...
@@ -1068,7 +1175,6 @@ public class DeviceCheckController {
//依据detail账单对应的checkUserId来判断是2流程还是多流程的
//依据detail账单对应的checkUserId来判断是2流程还是多流程的
DeviceCheckDetail
currentDetail
=
detailRepo
.
findById
(
id
).
get
();
Integer
userAId
=
currentDetail
.
getCheckUserAId
();
Integer
userAId
=
currentDetail
.
getCheckUserAId
();
Integer
userBId
=
currentDetail
.
getCheckUserBId
();
Integer
userBId
=
currentDetail
.
getCheckUserBId
();
...
@@ -1085,13 +1191,13 @@ public class DeviceCheckController {
...
@@ -1085,13 +1191,13 @@ public class DeviceCheckController {
taskService
.
moveToNext
(
currentTask
,
userAId
);
taskService
.
moveToNext
(
currentTask
,
userAId
);
}
else
{
}
else
{
// 如果是2流程的,则直接结束该任务
// 如果是2流程的,则直接结束该任务
log
.
info
(
"[核查模块]
该详情任务是一个2流程任务,结束任务并统计数据
..."
);
log
.
info
(
"[核查模块]
详情任务推进到下个阶段
..."
);
taskService
.
moveTo
End
(
currentTask
);
taskService
.
moveTo
Next
(
currentTask
);
summaryDetail
(
currentTask
,
currentDetail
);
summaryDetail
(
currentTask
,
currentDetail
);
}
}
}
else
{
}
else
{
//不通过则回到第一阶段
//不通过则回到第一阶段
StatusEnum
firstStatus
=
getFirstStatus
(
currentTask
.
getBillStatus
());
StatusEnum
firstStatus
=
getFirstStatus
(
currentTask
.
getBillStatus
()
,
Integer
.
valueOf
(
currentDetail
.
getVar2
())
);
taskService
.
moveToSpecial
(
currentTask
,
firstStatus
,
currentTask
.
getFirstUserId
());
taskService
.
moveToSpecial
(
currentTask
,
firstStatus
,
currentTask
.
getFirstUserId
());
}
}
log
.
info
(
"[核查模块] 专管员B操作成功"
);
log
.
info
(
"[核查模块] 专管员B操作成功"
);
...
@@ -1101,84 +1207,243 @@ public class DeviceCheckController {
...
@@ -1101,84 +1207,243 @@ public class DeviceCheckController {
}
}
/**
/**
*
用于核查的回退
接口
*
市人员审核区自查数据的
接口
*
*
* @param id 办结的done接口id
* @param detailId
* @param pass 是否通过 true - 通过 ,false - 未通过
* @return
* @return
*/
*/
@ApiOperation
(
value
=
"核查回退"
)
@PutMapping
(
"/city/audit/{id}"
)
@PutMapping
(
"/check/rollback/{id}"
)
@ApiOperation
(
value
=
"市专管人员审核区自查数据的接口"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ResponseEntity
cityAudit
(
public
ResponseEntity
checkRollback
(
@PathVariable
Integer
id
)
{
@PathVariable
(
name
=
"id"
)
Integer
detailId
,
log
.
info
(
"[核查模块] 将id = {} 的检查任务进行回退"
,
id
);
@RequestParam
boolean
pass
)
{
Specification
<
Task
>
donePred
=
Specifications
.<
Task
>
and
()
.
eq
(
"billStatus"
,
CONFIRM_STAT_0
.
id
)
.
eq
(
"billId"
,
id
)
.
eq
(
"businessType"
,
CONFIRM_CHECK_STAT
.
id
)
.
build
();
TaskBto
doneTask
=
taskRepo
.
findOne
(
donePred
).
get
().
parse2Bto
();
Specification
<
Task
>
checkPred
=
Specifications
.<
Task
>
and
()
TaskBto
currentTask
=
taskService
.
get
(
detailId
,
CONFIRM_CHECK_DETAIL
.
id
);
.
eq
(
"customInfo"
,
"exam"
)
DeviceCheckDetail
currentDetail
=
detailRepo
.
findById
(
detailId
).
get
();
.
eq
(
"billId"
,
id
)
.
eq
(
"businessType"
,
CONFIRM_CHECK_STAT
.
id
)
.
build
();
Task
checkTask
=
taskRepo
.
findOne
(
checkPred
).
get
();
//1.将市检查的任务节点回退到等待办结的状态
taskService
.
moveToSpecial
(
checkTask
.
parse2Bto
(),
CHECK_EXAM_STAT_1
);
//2.删除掉省的办结任务
if
(
pass
)
{
if
(
Objects
.
isNull
(
doneTask
))
{
// 通过的话就推进任务进度,合并数据
log
.
info
(
"[核查模块] 没有找到对应的办结任务"
);
log
.
info
(
"[核查模块] 市专管员审核通过,结束 {} 区的自查任务并汇总数据"
,
currentDetail
.
getCheckUnit
());
taskService
.
moveToNext
(
currentTask
);
summaryDetail
(
currentTask
,
currentDetail
);
return
ResponseEntity
.
ok
(
"市专管员审核通过,结束"
+
currentDetail
.
getCheckUnit
()
+
" 区的自查任务并汇总数据"
);
}
else
{
}
else
{
log
.
info
(
"[核查模块] 删除id = {}的办结任务"
,
doneTask
.
getId
());
log
.
info
(
"[核查模块] 市专管员审核未通过,回滚该任务到初始状态,任务id = {}"
,
currentTask
.
getId
());
taskRepo
.
deleteById
(
doneTask
.
getId
());
// 重置Task任务本身的任务状态,使其回滚到等待专管员A处理时的状态,并在Task里添加特殊的回滚标记,用来鉴别这是一个回滚任务
StatusEnum
firstStatus
=
getFirstStatus
(
currentTask
.
getBillStatus
(),
Integer
.
valueOf
(
currentDetail
.
getVar2
()));
currentTask
.
setRemark
(
"ROLLBACK-0"
);
taskService
.
moveToSpecial
(
currentTask
,
firstStatus
,
currentTask
.
getFirstUserId
());
//重置该自查详情里的各个装备的自查详情
currentDetail
=
setDetailCheckNumber
(
currentDetail
,
119
);
currentDetail
=
detailRepo
.
save
(
currentDetail
);
//该detail对应的stat数据里相应的数据剔除(写一个通用的剔除方法), 否则在第二次审核通过的时候会重复计算一次数据
TaskBto
fatherTask
=
taskService
.
get
(
currentTask
.
getParentTaskId
());
DeviceCheckStat
dcs
=
statRepo
.
findById
(
fatherTask
.
getBillId
()).
get
();
removeDetailFromDcs
(
currentDetail
,
dcs
);
return
ResponseEntity
.
ok
(
"回退成功!回滚该任务到初始状态,id = "
+
currentTask
.
getId
());
}
}
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
"核查回退操作成功!"
));
}
}
/**
* 省专管员审核自查数据的方法
*
* @param detailId 自查主键id
* @param pass 是否通过 true - 通过 ,false - 未通过
* @return
*/
@PutMapping
(
"/prov/audit/{id}"
)
@ApiOperation
(
value
=
"省专管人员审核区自查数据的接口"
)
public
ResponseEntity
provAudit
(
@PathVariable
(
name
=
"id"
)
Integer
detailId
,
@RequestParam
boolean
pass
)
{
if
(
pass
)
{
log
.
info
(
"[核查模块] 省专管员审查detailId = {} 的自查数据-审核通过"
,
detailId
);
return
provAuditPass
(
detailId
);
}
else
{
log
.
info
(
"[核查模块] 省专管员审查detailId = {} 的自查数据-审核未通过"
,
detailId
);
return
provAuitNotPassed
(
detailId
);
}
}
/**
/**
*
用于检查页面的回退接口
*
将detail里的detailString里的检查数字该为指定数值
*
*
* @param id 自查的detail id
* @param detail
* @param number
*/
private
DeviceCheckDetail
setDetailCheckNumber
(
DeviceCheckDetail
detail
,
Integer
number
)
{
String
detailString
=
detail
.
getCheckDetail
();
String
updatedString
=
Arrays
.
stream
(
detailString
.
split
(
","
))
.
map
(
s
->
s
.
split
(
"-"
)[
0
]
+
"-"
+
number
)
.
collect
(
joining
(
","
));
detail
.
setCheckDetail
(
updatedString
);
return
detail
;
}
/**
* 省对区审查 未通过的 逻辑
*
* @param id detail Id
* @return
* @return
*/
*/
@ApiOperation
(
value
=
" "
)
private
ResponseEntity
provAuitNotPassed
(
Integer
id
)
{
@PutMapping
(
"/exam/rollback/{id}"
)
//1. bill单的自查将百位数变为3
@Transactional
(
rollbackFor
=
Exception
.
class
)
DeviceCheckDetail
detail
=
detailRepo
.
findById
(
id
).
get
();
public
ResponseEntity
examRollback
(
@PathVariable
Integer
id
)
{
String
detailString
=
detail
.
getCheckDetail
();
log
.
info
(
"[核查模块] 进行检查回退操作,要回退的检查detail id为 {}"
,
id
);
String
initalDetail
=
Arrays
.
stream
(
detailString
.
split
(
","
))
//1. 回退device-detail数据 包括 detail String,checkResult,userAId,userBid,checkedCount
.
map
(
s
->
s
.
split
(
"-"
)[
0
]
+
"-"
+
119
)
// 将原来的checkDetail 的检查状态统一更改为 8 - 已退回
String
detail
=
detailRepo
.
getOne
(
id
).
getCheckDetail
();
String
updateDetail
=
Arrays
.
stream
(
detail
.
split
(
","
))
.
map
(
s
->
s
.
split
(
"-"
)[
0
]
+
"-"
+
"8"
)
.
collect
(
joining
(
","
));
.
collect
(
joining
(
","
));
String
updateDetail
=
changeHunds
(
detailString
,
3
);
detailRepo
.
updateCheckDetail
(
id
,
updateDetail
,
""
,
0
,
0
,
0
);
detailRepo
.
updateCheckDetail
(
id
,
updateDetail
,
""
,
0
,
0
,
0
);
//2. 回退任务Task
//2. 当前任务结束,开启一个新的 退回任务(连带一个新的detail)
TaskBto
currentTask
=
taskService
.
get
(
id
,
CONFIRM_CHECK_DETAIL
.
id
);
TaskBto
currentTask
=
taskService
.
get
(
id
,
CONFIRM_CHECK_DETAIL
.
id
);
StatusEnum
firstStatus
=
GlobalMap
.
getStatusEnumMap
().
get
(
Integer
.
valueOf
(
currentTask
.
getRemark
()));
String
remark
=
currentTask
.
getRemark
();
taskService
.
moveToSpecial
(
currentTask
,
firstStatus
,
currentTask
.
getFirstUserId
());
if
(
Objects
.
nonNull
(
remark
)
&&
remark
.
contains
(
"ROLLBACK"
))
{
//3.如果父级任务状态已经到确认阶段,则同样回退一个阶段
Integer
times
=
Integer
.
valueOf
(
remark
.
split
(
"-"
)[
1
]);
remark
=
"ROLLBACK-"
+
++
times
;
}
else
{
remark
=
"ROLLBACK-1"
;
}
currentTask
.
setRemark
(
remark
);
TaskBto
newTask
=
currentTask
.
toDo
().
copy
().
parse2Bto
();
currentTask
.
setCustomInfo
(
currentTask
.
getCustomInfo
());
taskService
.
moveToEnd
(
currentTask
);
// 创建新的detail 新的detail会在B的时候加入,所以老的stat要去除掉
DeviceCheckDetail
cDetail
=
detail
.
copyWithoutId
();
cDetail
.
setId
(
null
);
cDetail
.
setCheckDetail
(
initalDetail
);
cDetail
=
detailRepo
.
save
(
cDetail
);
// 创建新的任务(被拒绝的自查单位如果是区则是140状态,否则是160状态)
String
unitName
=
cDetail
.
getCheckUnit
();
Integer
level
=
unitsRepo
.
findByName
(
unitName
).
getLevel
();
Integer
initStatusId
=
0
;
if
(
level
==
3
)
{
initStatusId
=
CHECK_DETAIL_REGION_0
.
id
;
}
else
{
initStatusId
=
CHECK_DETAIL_CITY_0
.
id
;
}
newTask
.
setBillStatus
(
initStatusId
);
newTask
.
setBillId
(
cDetail
.
getId
());
newTask
.
setId
(
0
);
newTask
.
setCustomInfo
(
newTask
.
getCustomInfo
());
newTask
.
getInvolveUserIdList
().
add
(
0
);
newTask
.
setCurrentPoint
(
newTask
.
getInvolveUserIdList
().
size
()
-
1
);
// 尝试从老任务中获取重做次数 - 新任务老任务都需要更新remark
newTask
.
setRemark
(
remark
);
log
.
info
(
"[核查模块] 省回退操作中... 任务remark = {}"
,
remark
);
newTask
.
setRemark
(
remark
);
taskService
.
start
(
newTask
);
//3. 在stat的remark中追加信息 - 找到currentTask在其中的顺位
TaskBto
fatherTask
=
taskService
.
get
(
currentTask
.
getParentTaskId
());
TaskBto
fatherTask
=
taskService
.
get
(
currentTask
.
getParentTaskId
());
// log.info("[核查模块] 父级统计节点的task id = {} , bill id = {}", fatherTask.getId(), fatherTask.getBillId());
List
<
Task
>
childTask
=
taskRepo
.
findAllByParentTaskId
(
fatherTask
.
getId
());
// if (fatherTask.getBillStatus().equals(CHECK_EXAM_STAT_1.id)) {
int
pos
=
0
;
// log.info("[核查模块] 检测到父级节点已经进入确认阶段,回滚父级节点");
for
(
int
i
=
0
;
i
<
childTask
.
size
();
i
++)
{
// taskService.moveToSpecial(fatherTask, CHECK_EXAM_STAT_0, fatherTask.getFirstUserId());
if
(
childTask
.
get
(
i
).
getId
().
equals
(
currentTask
.
getId
()))
{
// }
log
.
info
(
"[核查模块] 记录remark的pos位置 = {}"
,
i
);
//3. 回退合并上去的数据
}
String
unitName
=
detailRepo
.
findById
(
id
).
get
().
getCheckUnit
();
}
AreaUnit
areaUnit
=
auService
.
findOne
(
AuExample
.
UnitName
,
unitName
);
String
cityName
=
areaUnit
.
getName
();
DeviceCheckStat
dcs
=
statRepo
.
findById
(
fatherTask
.
getBillId
()).
get
();
String
[]
groups
=
dcs
.
getRemark
().
split
(
"\\|"
);
String
pading
=
groups
[
pos
];
dcs
.
setRemark
(
dcs
.
getRemark
()
+
"|"
+
pading
);
log
.
info
(
"[核查模块] 补充remark = {}"
,
pading
);
// 老的stat要去除掉对应areaName的数据
removeDetailFromDcs
(
detail
,
dcs
);
resetStatByCity
(
fatherTask
.
getBillId
(),
cityName
);
//4.父级任务变为进行中
fatherTask
.
setBillStatus
(
CHECK_EXAM_STAT_1
.
id
);
taskRepo
.
save
(
fatherTask
.
toDo
());
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
"回退操作成功!"
));
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
"检查回退操作成功!"
));
}
}
/**
* 省对区审查通过的逻辑
*
* @param id detail Id
* @return
*/
private
ResponseEntity
provAuditPass
(
Integer
id
)
{
//将自查的情况的百位数全部替换成2
DeviceCheckDetail
detail
=
detailRepo
.
findById
(
id
).
get
();
String
updatedString
=
changeHunds
(
detail
.
getCheckDetail
(),
2
);
detail
.
setCheckDetail
(
updatedString
);
log
.
info
(
"[核查模块] 审核通过 - 更新后的detailString形如 {}"
,
updatedString
.
split
(
","
)[
0
]);
detailRepo
.
save
(
detail
);
//将对应stat中地区的comProgress 改为 2 comsitution 改为12
String
areaName
=
auService
.
findOne
(
AuExample
.
UnitName
,
detail
.
getCheckUnit
()).
getName
();
TaskBto
currentTask
=
taskService
.
get
(
id
,
CONFIRM_CHECK_DETAIL
.
id
);
TaskBto
fatherTask
=
taskService
.
get
(
currentTask
.
getParentTaskId
());
DeviceCheckStat
dcs
=
statRepo
.
findById
(
fatherTask
.
getBillId
()).
get
();
CheckStatVo
csv
=
transUtil
.
checkStatDo2Vo
(
dcs
);
for
(
CheckDeviceStatVo
vo
:
csv
.
getDeviceStatVoList
())
{
for
(
CheckAreaStatVo
av
:
vo
.
getAreaStatList
())
{
if
(
av
.
getAreaName
().
equals
(
areaName
))
{
log
.
info
(
"[核查模块] 审核通过 - 地区 = {} 的统计数据在统计信息中被成功修改了"
,
areaName
);
av
.
auditPassed
();
}
}
}
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
"审核通过!"
));
}
private
void
removeDetailFromDcs
(
DeviceCheckDetail
detail
,
DeviceCheckStat
dcs
)
{
String
areaName
=
auService
.
findOne
(
AuExample
.
UnitName
,
detail
.
getCheckUnit
()).
getName
();
CheckStatVo
csv
=
transUtil
.
checkStatDo2Vo
(
dcs
);
for
(
CheckDeviceStatVo
vo
:
csv
.
getDeviceStatVoList
())
{
List
<
CheckAreaStatVo
>
filterList
=
vo
.
getAreaStatList
().
stream
()
.
filter
(
casv
->
!
casv
.
getAreaName
().
equals
(
areaName
)).
collect
(
toList
());
if
(
filterList
.
size
()
!=
vo
.
getAreaStatList
().
size
())
{
log
.
info
(
"[核查模块] 回退操作-将退回的数据从统计中去除了."
);
vo
.
setAreaStatList
(
filterList
);
}
}
statRepo
.
save
(
csv
.
toDo
());
}
/**
* 将detailString里的百位数改为指定数字
*
* @param detailString 要更改的自查详情字符串
* @param value 想要改成的数字
* @return
*/
private
String
changeHunds
(
String
detailString
,
Integer
value
)
{
String
updateDetail
=
Arrays
.
stream
(
detailString
.
split
(
","
))
.
map
(
s
->
{
Integer
number
=
Integer
.
valueOf
(
s
.
split
(
"-"
)[
1
]);
int
digit
=
number
%
10
;
int
tens
=
number
/
10
%
10
;
number
=
value
*
100
+
tens
*
10
+
digit
;
return
s
.
split
(
"-"
)[
0
]
+
"-"
+
number
;
})
.
collect
(
joining
(
","
));
return
updateDetail
;
}
/**
/**
* 将统计数据中指定城市的统计数据重置
* 将统计数据中指定城市的统计数据重置
*
*
...
@@ -1199,43 +1464,6 @@ public class DeviceCheckController {
...
@@ -1199,43 +1464,6 @@ public class DeviceCheckController {
statRepo
.
save
(
statVo
.
toDo
());
statRepo
.
save
(
statVo
.
toDo
());
}
}
@ApiOperation
(
value
=
"核查组A/B确认核查详情单"
)
@PutMapping
(
"/detail/C/{id}"
)
public
ResponseEntity
<
ResultObj
>
checkUserC
(
@PathVariable
Integer
id
,
@RequestParam
boolean
pass
)
{
TaskBto
currentTask
=
taskService
.
get
(
id
,
CONFIRM_CHECK_DETAIL
.
id
);
DeviceCheckDetail
currentDetail
=
detailRepo
.
findById
(
id
).
get
();
if
(
pass
)
{
// 如果当前是第3步(利用余数来判断),则需要指定核查组B的人来接受任务
boolean
stepC
=
currentTask
.
getBillStatus
()
%
10
==
2
;
boolean
stepD
=
currentTask
.
getBillStatus
()
%
10
==
3
;
if
(
stepC
)
{
log
.
info
(
"[核查模块] C 检查组成员A正在进行核查操作,核查详情账单id为 : {}"
,
id
);
if
(!
currentTask
.
getBillStatus
().
equals
(
CHECK_DETAIL_2
.
id
))
{
return
ResponseEntity
.
status
(
400
).
body
(
new
ResultObj
<>(
String
.
format
(
"当前任务的状态异常!当前任务状态为 %s , 任务状态应该为 %s"
,
GlobalMap
.
getStatusEnumMap
().
get
(
currentTask
.
getBillStatus
()),
CHECK_DETAIL_2
.
name
)));
}
taskService
.
moveToNext
(
currentTask
,
currentDetail
.
getCheckUserBId
());
log
.
info
(
"[核查模块] C 操作完毕"
);
}
if
(
stepD
)
{
if
(!
currentTask
.
getBillStatus
().
equals
(
CHECK_DETAIL_3
.
id
))
{
return
ResponseEntity
.
status
(
400
).
body
(
new
ResultObj
<>(
String
.
format
(
"当前任务的状态异常!当前任务状态为 %s , 任务状态应该为 %s"
,
GlobalMap
.
getStatusEnumMap
().
get
(
currentTask
.
getBillStatus
()),
CHECK_DETAIL_3
.
name
)));
}
// 如果当前是第4步,则直接结束任务,并且进行结果汇总
log
.
info
(
"[核查模块] D 检查组成员A正在进行核查操作,核查详情账单id为 : {}"
,
id
);
summaryDetail
(
currentTask
,
currentDetail
);
currentTask
=
taskService
.
moveToEnd
(
currentTask
);
log
.
info
(
"[核查模块] D 操作完毕"
);
}
}
else
{
// 如果没通过则返回第1步
StatusEnum
firstStatus
=
getFirstStatus
(
currentTask
.
getBillStatus
());
taskService
.
moveToSpecial
(
currentTask
,
firstStatus
,
currentTask
.
getFirstUserId
());
}
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
"操作成功"
));
}
/**
/**
* @param taskId 待办任务id
* @param taskId 待办任务id
* @param statId 市级统计的STAT ID
* @param statId 市级统计的STAT ID
...
@@ -1304,8 +1532,7 @@ public class DeviceCheckController {
...
@@ -1304,8 +1532,7 @@ public class DeviceCheckController {
log
.
info
(
"[核查模块] 办结统计待办操作成功"
);
log
.
info
(
"[核查模块] 办结统计待办操作成功"
);
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
"办结统计待办确认完毕"
));
return
ResponseEntity
.
ok
(
new
ResultObj
<>(
"办结统计待办确认完毕"
));
}
}
@Autowired
private
SelfCheckController
selfCheckController
;
/**
/**
* @param statId 统计账单主键id
* @param statId 统计账单主键id
*/
*/
...
@@ -1320,6 +1547,22 @@ public class DeviceCheckController {
...
@@ -1320,6 +1547,22 @@ public class DeviceCheckController {
Integer
parentTaskId
=
currentTask
.
getParentTaskId
();
Integer
parentTaskId
=
currentTask
.
getParentTaskId
();
boolean
hasParent
=
parentTaskId
!=
0
;
boolean
hasParent
=
parentTaskId
!=
0
;
//尝试寻找老的市办结任务,如果有的话就删除加END
//5.需要将上一次市的确认任务给清理掉
// 父级的父级,就是省的任务,然后子child里名字包含 统计数据确认任务 的任务给 END 吧
Task
verifyTask
=
taskRepo
.
findAllByParentTaskId
(
parentTaskId
)
.
stream
()
.
filter
(
task
->
task
.
getTitle
().
contains
(
"统计数据确认任务"
))
.
sorted
(
Comparator
.
comparing
(
Task:
:
getId
))
.
findFirst
()
.
orElse
(
null
);
if
(
Objects
.
nonNull
(
verifyTask
))
{
log
.
info
(
"[核查模块] 发现了id = {}市的统计确认任务,将其完结并剔除整个树节点"
,
verifyTask
.
getId
());
verifyTask
.
setParentTaskId
(
0
);
taskService
.
moveToEnd
(
verifyTask
.
parse2Bto
());
}
if
(
hasParent
)
{
if
(
hasParent
)
{
//市统计的办结 -> 开启对应市 数据确认任务for 省
//市统计的办结 -> 开启对应市 数据确认任务for 省
String
areaName
=
auService
.
findOne
(
AuExample
.
UnitId
,
currentTask
.
getOwnUnit
()).
getName
();
String
areaName
=
auService
.
findOne
(
AuExample
.
UnitId
,
currentTask
.
getOwnUnit
()).
getName
();
...
@@ -1345,7 +1588,11 @@ public class DeviceCheckController {
...
@@ -1345,7 +1588,11 @@ public class DeviceCheckController {
* @param currentDetail 需要汇总的详情核查数据对象
* @param currentDetail 需要汇总的详情核查数据对象
*/
*/
private
void
summaryDetail
(
TaskBto
currentTask
,
DeviceCheckDetail
currentDetail
)
{
private
void
summaryDetail
(
TaskBto
currentTask
,
DeviceCheckDetail
currentDetail
)
{
log
.
info
(
"[核查模块] 正在进行数据汇总"
);
log
.
info
(
"[核查模块] 正在尝试进行Task id = {} 的自查数据汇总..."
,
currentTask
.
getId
());
if
(!
currentTask
.
getBillStatus
().
equals
(
END
.
id
))
{
log
.
info
(
"[核查模块] 该自查任务还未完成,结束汇总,当前任务状态id = {}"
,
currentTask
.
getBillStatus
());
}
// 先找到汇总地区的账单id 查询当前detail task 的 父级TASK
// 先找到汇总地区的账单id 查询当前detail task 的 父级TASK
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
);
...
@@ -1412,9 +1659,14 @@ public class DeviceCheckController {
...
@@ -1412,9 +1659,14 @@ public class DeviceCheckController {
*
*
* @param currentStatusId 任务状态id
* @param currentStatusId 任务状态id
*/
*/
private
StatusEnum
getFirstStatus
(
Integer
currentStatusId
)
{
private
StatusEnum
getFirstStatus
(
Integer
currentStatusId
,
Integer
defaultStatusId
)
{
int
remainder
=
currentStatusId
%
10
;
int
remainder
=
currentStatusId
%
10
;
return
GlobalMap
.
getStatusEnumMap
().
get
(
currentStatusId
-
remainder
);
StatusEnum
resultEnum
=
GlobalMap
.
getStatusEnumMap
().
get
(
currentStatusId
-
remainder
);
if
(
Objects
.
isNull
(
resultEnum
))
{
return
GlobalMap
.
getStatusEnumMap
().
get
(
defaultStatusId
);
}
else
{
return
resultEnum
;
}
}
}
public
List
<
CheckDeviceStatVo
>
parseStatString2Vo
(
TaskBto
task
,
DeviceCheckDetail
detail
)
{
public
List
<
CheckDeviceStatVo
>
parseStatString2Vo
(
TaskBto
task
,
DeviceCheckDetail
detail
)
{
...
@@ -1441,8 +1693,10 @@ public class DeviceCheckController {
...
@@ -1441,8 +1693,10 @@ public class DeviceCheckController {
.
collect
(
toList
());
.
collect
(
toList
());
long
start
=
System
.
currentTimeMillis
();
long
start
=
System
.
currentTimeMillis
();
Map
<
Integer
,
DeviceLibrary
>
deviceMap
=
deviceRepo
.
findAllByIdIn
(
idList
)
.
stream
()
List
<
DeviceLibrary
>
allDevice
=
dcService
.
getAllDeviceLibraryList
();
Map
<
Integer
,
DeviceLibrary
>
deviceMap
=
allDevice
.
stream
()
.
filter
(
d
->
idList
.
contains
(
d
.
getId
()))
.
collect
(
toMap
(
DeviceLibrary:
:
getId
,
Function
.
identity
()));
.
collect
(
toMap
(
DeviceLibrary:
:
getId
,
Function
.
identity
()));
long
end
=
System
.
currentTimeMillis
();
long
end
=
System
.
currentTimeMillis
();
log
.
info
(
"[核查TEST] 批量查询id集合耗时 {} ms "
,
end
-
start
);
log
.
info
(
"[核查TEST] 批量查询id集合耗时 {} ms "
,
end
-
start
);
...
@@ -1458,23 +1712,34 @@ public class DeviceCheckController {
...
@@ -1458,23 +1712,34 @@ public class DeviceCheckController {
DeviceLibrary
checkDevice
=
deviceMap
.
get
(
deviceId
);
DeviceLibrary
checkDevice
=
deviceMap
.
get
(
deviceId
);
CheckAreaStatVo
checkAreaStatVo
;
CheckAreaStatVo
checkAreaStatVo
;
// 百位数 0/1 待审核 2 无误 3未通过
// 十位数 1 人工 2 自动
// 十位数 1 人工 2 自动
// 0缺失1无误2新增3不在库 8已退回 9未检查
// 0缺失1无误2新增3不在库 8已退回 9未检查
int
digits
=
proofResult
%
10
;
int
digits
=
proofResult
%
10
;
int
tens
=
proofResult
/
10
%
10
;
int
huns
=
proofResult
/
100
%
10
;
if
(
digits
==
8
)
{
// 个位数判断自查结果
checkAreaStatVo
=
new
CheckAreaStatVo
(
areaName
,
1
,
1
,
3
,
-
1
,
statId
,
detailId
);
if
(
digits
==
9
)
{
}
else
if
(
digits
==
9
)
{
checkAreaStatVo
=
new
CheckAreaStatVo
(
areaName
,
1
,
1
,
0
,
10
,
statId
,
detailId
);
checkAreaStatVo
=
new
CheckAreaStatVo
(
areaName
,
1
,
1
,
0
,
0
,
statId
,
detailId
);
}
else
if
(
digits
==
3
)
{
}
else
if
(
digits
==
3
)
{
//跳过非在库的统计
//跳过非在库的统计
continue
;
continue
;
}
else
if
(
digits
==
1
)
{
}
else
if
(
digits
==
1
)
{
checkAreaStatVo
=
new
CheckAreaStatVo
(
areaName
,
1
,
1
,
2
,
0
,
statId
,
detailId
);
checkAreaStatVo
=
new
CheckAreaStatVo
(
areaName
,
1
,
1
,
2
,
1
0
,
statId
,
detailId
);
}
else
if
(
digits
==
0
)
{
}
else
if
(
digits
==
0
)
{
checkAreaStatVo
=
new
CheckAreaStatVo
(
areaName
,
0
,
1
,
2
,
1
,
statId
,
detailId
);
checkAreaStatVo
=
new
CheckAreaStatVo
(
areaName
,
0
,
1
,
2
,
1
0
,
statId
,
detailId
);
}
else
{
}
else
{
checkAreaStatVo
=
new
CheckAreaStatVo
(
areaName
,
1
,
1
,
2
,
1
,
statId
,
detailId
);
checkAreaStatVo
=
new
CheckAreaStatVo
(
areaName
,
1
,
1
,
2
,
10
,
statId
,
detailId
);
}
// 百位数判断审核情况 0,1未检查 2是无误 3是未通过
if
(
huns
==
0
||
huns
==
1
)
{
checkAreaStatVo
.
setComSituation
(
10
);
}
else
if
(
huns
==
2
)
{
checkAreaStatVo
.
setComSituation
(
12
);
}
else
if
(
huns
==
3
)
{
checkAreaStatVo
.
setComSituation
(
13
);
}
}
List
<
CheckAreaStatVo
>
areaStatVoList
=
new
ArrayList
<>();
List
<
CheckAreaStatVo
>
areaStatVoList
=
new
ArrayList
<>();
...
@@ -1657,7 +1922,7 @@ public class DeviceCheckController {
...
@@ -1657,7 +1922,7 @@ public class DeviceCheckController {
return
new
CheckAreaStatVo
(
finalCityName
,
actualCount
,
supposeCount
,
finalProgress
,
finalSituation
,
0
,
0
);
return
new
CheckAreaStatVo
(
finalCityName
,
actualCount
,
supposeCount
,
finalProgress
,
finalSituation
,
0
,
0
);
}
}
private
void
findBySystem
(){
private
void
findBySystem
()
{
selfCheckController
.
findBySystem1
();
selfCheckController
.
findBySystem1
();
}
}
...
...
dev-confirmcheck/src/main/java/com/tykj/dev/device/confirmcheck/entity/domain/DeviceCheckDetail.java
浏览文件 @
883b4363
...
@@ -128,7 +128,7 @@ public class DeviceCheckDetail extends BaseEntity {
...
@@ -128,7 +128,7 @@ public class DeviceCheckDetail extends BaseEntity {
private
String
remark
;
private
String
remark
;
/**
/**
* 预留字段2
* 预留字段2
现在用来记录该自查任务的初始状态号
*/
*/
@ApiModelProperty
(
value
=
"预留字段2"
)
@ApiModelProperty
(
value
=
"预留字段2"
)
private
String
var2
;
private
String
var2
;
...
...
dev-confirmcheck/src/main/java/com/tykj/dev/device/confirmcheck/entity/vo/CheckExamDetailVo.java
浏览文件 @
883b4363
...
@@ -6,6 +6,7 @@ import lombok.AllArgsConstructor;
...
@@ -6,6 +6,7 @@ import lombok.AllArgsConstructor;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -27,12 +28,12 @@ public class CheckExamDetailVo {
...
@@ -27,12 +28,12 @@ public class CheckExamDetailVo {
private
List
<
String
>
userNames
;
private
List
<
String
>
userNames
;
@ApiModelProperty
(
name
=
"需要被检查的区域id"
)
@ApiModelProperty
(
name
=
"需要被检查的区域id"
)
private
Integer
unitId
;
private
List
<
Integer
>
unitIds
;
@ApiModelProperty
(
name
=
"备注"
)
@ApiModelProperty
(
name
=
"备注"
)
private
String
remark
;
private
String
remark
;
public
CheckExamDetailVo
copy
(
Integer
unitId
,
String
remark
)
{
public
CheckExamDetailVo
copy
(
Integer
unitId
,
String
remark
)
{
return
new
CheckExamDetailVo
(
this
.
groupName
,
this
.
userNames
,
unitId
,
remark
);
return
new
CheckExamDetailVo
(
this
.
groupName
,
this
.
userNames
,
Collections
.
singletonList
(
unitId
)
,
remark
);
}
}
}
}
dev-confirmcheck/src/main/java/com/tykj/dev/device/confirmcheck/service/impl/ConfirmCheckServiceImpl.java
浏览文件 @
883b4363
...
@@ -57,7 +57,7 @@ import java.util.stream.Collectors;
...
@@ -57,7 +57,7 @@ import java.util.stream.Collectors;
import
static
com
.
tykj
.
dev
.
misc
.
base
.
BusinessEnum
.
CONFIRM_CHECK_DETAIL
;
import
static
com
.
tykj
.
dev
.
misc
.
base
.
BusinessEnum
.
CONFIRM_CHECK_DETAIL
;
import
static
com
.
tykj
.
dev
.
misc
.
base
.
BusinessEnum
.
CONFIRM_CHECK_STAT
;
import
static
com
.
tykj
.
dev
.
misc
.
base
.
BusinessEnum
.
CONFIRM_CHECK_STAT
;
import
static
com
.
tykj
.
dev
.
misc
.
base
.
StatusEnum
.
CHECK_DETAIL_0
;
import
static
com
.
tykj
.
dev
.
misc
.
base
.
StatusEnum
.
CHECK_DETAIL_
REGION_
0
;
import
static
com
.
tykj
.
dev
.
misc
.
base
.
StatusEnum
.
CHECK_STAT_0
;
import
static
com
.
tykj
.
dev
.
misc
.
base
.
StatusEnum
.
CHECK_STAT_0
;
import
static
java
.
util
.
stream
.
Collectors
.*;
import
static
java
.
util
.
stream
.
Collectors
.*;
...
@@ -210,7 +210,7 @@ public class ConfirmCheckServiceImpl implements ConfirmCheckService, CommandLine
...
@@ -210,7 +210,7 @@ public class ConfirmCheckServiceImpl implements ConfirmCheckService, CommandLine
.
collect
(
toList
());
.
collect
(
toList
());
statVoList
.
addAll
(
cityStatVoList
);
statVoList
.
addAll
(
cityStatVoList
);
// 构建市自查TASK
// 构建市自查TASK
TaskBto
cityDetailTask
=
new
TaskBto
(
CHECK_DETAIL_0
.
id
,
cityUnit
.
getName
()
+
"自动核查自查"
,
cityStatTask
.
getId
(),
addNode
(
cityStatTask
.
getNodeIdDetail
(),
cityStatTask
.
getId
()),
CONFIRM_CHECK_DETAIL
.
id
,
cityDetail
.
getId
(),
cityUnit
.
getUnitId
(),
0
);
TaskBto
cityDetailTask
=
new
TaskBto
(
CHECK_DETAIL_
REGION_
0
.
id
,
cityUnit
.
getName
()
+
"自动核查自查"
,
cityStatTask
.
getId
(),
addNode
(
cityStatTask
.
getNodeIdDetail
(),
cityStatTask
.
getId
()),
CONFIRM_CHECK_DETAIL
.
id
,
cityDetail
.
getId
(),
cityUnit
.
getUnitId
(),
0
);
cityDetailTask
.
setCustomInfo
(
"auto"
);
cityDetailTask
.
setCustomInfo
(
"auto"
);
cityDetailTask
=
taskService
.
start
(
cityDetailTask
);
cityDetailTask
=
taskService
.
start
(
cityDetailTask
);
resultIds
.
get
(
"taskId"
).
add
(
cityDetailTask
.
getId
());
resultIds
.
get
(
"taskId"
).
add
(
cityDetailTask
.
getId
());
...
@@ -236,7 +236,7 @@ public class ConfirmCheckServiceImpl implements ConfirmCheckService, CommandLine
...
@@ -236,7 +236,7 @@ public class ConfirmCheckServiceImpl implements ConfirmCheckService, CommandLine
statVoList
.
addAll
(
countyStatVoList
);
statVoList
.
addAll
(
countyStatVoList
);
//构建县自查TASK
//构建县自查TASK
TaskBto
countyDetailTask
=
new
TaskBto
(
CHECK_DETAIL_0
.
id
,
countyUnit
.
getName
()
+
"自动核查自查"
,
cityStatTask
.
getId
(),
addNode
(
cityStatTask
.
getNodeIdDetail
(),
cityStatTask
.
getId
()),
CONFIRM_CHECK_DETAIL
.
id
,
countyDetail
.
getId
(),
countyUnit
.
getUnitId
(),
0
);
TaskBto
countyDetailTask
=
new
TaskBto
(
CHECK_DETAIL_
REGION_
0
.
id
,
countyUnit
.
getName
()
+
"自动核查自查"
,
cityStatTask
.
getId
(),
addNode
(
cityStatTask
.
getNodeIdDetail
(),
cityStatTask
.
getId
()),
CONFIRM_CHECK_DETAIL
.
id
,
countyDetail
.
getId
(),
countyUnit
.
getUnitId
(),
0
);
countyDetailTask
.
setCustomInfo
(
"auto"
);
countyDetailTask
.
setCustomInfo
(
"auto"
);
countyDetailTask
=
taskService
.
start
(
countyDetailTask
);
countyDetailTask
=
taskService
.
start
(
countyDetailTask
);
resultIds
.
get
(
"taskId"
).
add
(
countyDetailTask
.
getId
());
resultIds
.
get
(
"taskId"
).
add
(
countyDetailTask
.
getId
());
...
...
dev-misc/src/main/java/com/tykj/dev/misc/base/StatusEnum.java
浏览文件 @
883b4363
...
@@ -47,19 +47,23 @@ public enum StatusEnum {
...
@@ -47,19 +47,23 @@ public enum StatusEnum {
CHECK_STAT_1
(
111
,
"统计数据等待确认"
),
CHECK_STAT_1
(
111
,
"统计数据等待确认"
),
//以下为detail状态
//以下为
区自查
detail状态
CHECK_DETAIL_0
(
120
,
"等待专管员A处理"
),
CHECK_DETAIL_0
(
120
,
"等待专管员A处理"
),
CHECK_DETAIL_1
(
121
,
"等待专管员B处理"
),
CHECK_DETAIL_1
(
121
,
"等待专管员B处理"
),
CHECK_DETAIL_2
(
122
,
"等待核查员A处理"
),
CHECK_DETAIL_2
(
122
,
"等待核查员A处理"
),
CHECK_DETAIL_3
(
123
,
"等待核查员B处理"
),
//以下为检查stat状态
//以下为检查stat状态
CHECK_EXAM_STAT_0
(
130
,
"检查统计数据收集中"
),
CHECK_EXAM_STAT_0
(
130
,
"检查统计数据收集中"
),
CHECK_EXAM_STAT_1
(
131
,
"检查统计数据等待确认"
),
CHECK_EXAM_STAT_1
(
131
,
"检查统计数据等待确认"
),
//以下为检查detail状态
//以下为检查detail状态
CHECK_EXAM_DETAIL_0
(
140
,
"等待专管员A处理"
),
CHECK_DETAIL_REGION_0
(
140
,
"等待区专管员A处理"
),
CHECK_EXAM_DETAIL_1
(
141
,
"等待专管员B处理"
),
CHECK_DETAIL_REGION_1
(
141
,
"等待区专管员B处理"
),
CHECK_DETAIL_REGION_2
(
142
,
"等待市专管员审核"
),
// 市本级自查detail状态
CHECK_DETAIL_CITY_0
(
160
,
"等待专管员A处理"
),
CHECK_DETAIL_CITY_1
(
161
,
"等待专管员B处理"
),
/**
/**
* 清退任务
* 清退任务
...
...
dev-task/src/main/java/com/tykj/dev/device/task/service/impl/TaskServiceImpl.java
浏览文件 @
883b4363
...
@@ -1244,7 +1244,7 @@ public class TaskServiceImpl implements TaskService {
...
@@ -1244,7 +1244,7 @@ public class TaskServiceImpl implements TaskService {
if
(
taskSelectVo
.
getSelectNum
()
==
3
)
{
if
(
taskSelectVo
.
getSelectNum
()
==
3
)
{
//所有涉及人员所在单位包含当前用户所在单位且指针对应UserId不是当前用户
//所有涉及人员所在单位包含当前用户所在单位且指针对应UserId不是当前用户
// List<Integer> status = Arrays.asList(201,333,810,322,722,788,1250,2223,8110,888,140,130,141,111,1002,150);
// List<Integer> status = Arrays.asList(201,333,810,322,722,788,1250,2223,8110,888,140,130,141,111,1002,150);
List
<
Integer
>
status
=
Arrays
.
asList
(
201
,
333
,
810
,
322
,
722
,
788
,
1250
,
2223
,
8110
,
888
,
140
,
130
,
141
,
111
,
1002
,
150
,
101
);
List
<
Integer
>
status
=
Arrays
.
asList
(
201
,
333
,
810
,
322
,
722
,
788
,
1250
,
2223
,
8110
,
888
,
140
,
130
,
141
,
111
,
1002
,
150
,
101
,
142
,
160
,
161
);
List
<
TaskBto
>
taskBtoList
=
taskBtos
.
stream
()
List
<
TaskBto
>
taskBtoList
=
taskBtos
.
stream
()
.
filter
(
taskBto
->
{
.
filter
(
taskBto
->
{
// boolean unitExists = getUnitsByUsers(taskBto.getInvolveUserIdList()).contains(unitId);
// boolean unitExists = getUnitsByUsers(taskBto.getInvolveUserIdList()).contains(unitId);
...
...
docs/common_settings.md
0 → 100644
浏览文件 @
883b4363
## 任务Task的设定
**关于Involve_Users的设定**
-
0 是所有都能看见
-
{id} 是该id的User可以看见
-
-1 表明该任务不是待办,而是一个业务追踪
\ No newline at end of file
docs/confirm_check.md
浏览文件 @
883b4363
...
@@ -27,11 +27,11 @@
...
@@ -27,11 +27,11 @@
如上图所示,核查情况与自查任务的状态有着对应的关系
如上图所示,核查情况与自查任务的状态有着对应的关系
|
核查情况 | 结果
|
|
任务状态 | 核查情况
|
| ----------------- | -------------------------------------- |
| ----------------- | -------------------------------------- |
| 等待区专管员A处理 | 无 |
| 等待区专管员A处理 | 无 |
| 等待区专管员B处理 | 进行中 |
| 等待区专管员B处理 | 进行中 |
| 等待市专管员处理 |
待
审核 |
| 等待市专管员处理 |
等待市
审核 |
| 完结 | 完成 |
| 完结 | 完成 |
| 等待区专管员A处理 | 未通过(可以通过Task里的特殊标记来实现) |
| 等待区专管员A处理 | 未通过(可以通过Task里的特殊标记来实现) |
...
@@ -41,9 +41,9 @@
...
@@ -41,9 +41,9 @@
| 核查情况 | 核查结果 |
| 核查情况 | 核查结果 |
| ---------------------------- | -------- |
| ---------------------------- | -------- |
| 在完成以前的状态 | 无 |
| 在完成以前的状态 | 无 |
| 完成状态 |
待
审核 |
| 完成状态 |
等待省
审核 |
| 完成且省审核通过 | 无误 |
| 完成且省审核通过 | 无误 |
| 完成且省审核未通过(点击回退按钮了) |
未通过
|
| 完成且省审核未通过(点击回退按钮了) |
等待重做
|
### 市本级自查流程
### 市本级自查流程
...
@@ -61,7 +61,7 @@
...
@@ -61,7 +61,7 @@
如上图所示,核查情况与自查任务的状态有着对应的关系
如上图所示,核查情况与自查任务的状态有着对应的关系
|
核查情况
| 结果 |
|
任务状态
| 结果 |
| ----------------- | -------------------------------------- |
| ----------------- | -------------------------------------- |
| 等待市专管员A处理 | 无 |
| 等待市专管员A处理 | 无 |
| 等待市专管员B处理 | 进行中 |
| 等待市专管员B处理 | 进行中 |
...
@@ -73,7 +73,7 @@
...
@@ -73,7 +73,7 @@
| 核查情况 | 核查结果 |
| 核查情况 | 核查结果 |
| ---------------------------- | -------- |
| ---------------------------- | -------- |
| 在完成以前的状态 | 无 |
| 在完成以前的状态 | 无 |
| 完成状态 |
待
审核 |
| 完成状态 |
等待省
审核 |
| 完成且省审核通过 | 无误 |
| 完成且省审核通过 | 无误 |
| 完成且省审核未通过(点击回退按钮了) | 未通过 |
| 完成且省审核未通过(点击回退按钮了) | 未通过 |
...
@@ -126,9 +126,22 @@
...
@@ -126,9 +126,22 @@
| 核查结果 | 触发条件 |
| 核查结果 | 触发条件 |
| -------- | -------------------------------------- |
| -------- | -------------------------------------- |
| 无 | 该市级下所有区的核查结果为无 |
| 无 | 该市级下所有区的核查结果为无 |
| 待
审核 | 该市级下有任意一个区核查结果为待
审核 |
| 待
省审核 | 该市级下有任意一个区核查结果为等待省
审核 |
| 未通过 | 该市级下有任意一个区的核查结果为未通过 |
| 未通过 | 该市级下有任意一个区的核查结果为未通过 |
| 无误 | 该市级下所有区的核查结果都为无误 |
| 无误 | 该市级下所有区的核查结果都为无误 |
| 审核中 | 其他情况下为审核中 |
## 关于自查状态问题的说明
**发起人是省**
-
状态转换 专管员A - 专管员B - 结束
**发起人是市**
-
区自查 专管员A - 专管员B - 市审核 - 结束
-
市本级自查 专管员A - 专管员B - 结束
## 已经发起的老数据的维护
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论