Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
项目统一框架
amos-boot-biz
Commits
29e82a63
Commit
29e82a63
authored
Jan 18, 2024
by
chenzhao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
检验业务修改
parent
55b3ceec
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
320 additions
and
140 deletions
+320
-140
BusinessTypeEnum.java
...oin/amos/boot/module/jyjc/api/enums/BusinessTypeEnum.java
+75
-0
JyjcInspectionApplicationModel.java
...module/jyjc/api/model/JyjcInspectionApplicationModel.java
+1
-1
TaskMessageDto.java
...ejoin/amos/boot/module/jyjc/api/model/TaskMessageDto.java
+2
-0
JyjcInspectionApplicationController.java
...c/biz/controller/JyjcInspectionApplicationController.java
+0
-16
JyjcInspectionApplicationServiceImpl.java
...iz/service/impl/JyjcInspectionApplicationServiceImpl.java
+229
-122
bizTypeInfo.json
...-module-jyjc-biz/src/main/resources/json/bizTypeInfo.json
+13
-1
No files found.
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-api/src/main/java/com/yeejoin/amos/boot/module/jyjc/api/enums/BusinessTypeEnum.java
0 → 100644
View file @
29e82a63
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
api
.
enums
;
/**
* 业务类型枚举
*
* @author Administrator
*/
public
enum
BusinessTypeEnum
{
/**
* 业务类型枚举
*/
JG_EQUIPMENT_HANDOVER
(
"101"
,
"设备移交"
),
JG_INSTALLATION_NOTIFICATION
(
"102"
,
"安装告知"
),
JG_MODIFICATION_NOTIFICATION
(
"103"
,
"改造告知"
),
JG_MAINTENANCE_NOTIFICATION
(
"104"
,
"维修告知"
),
JG_ADVICE_REMOVAL
(
"105"
,
"移装告知"
),
JG_MAINTENANCE_RECORD
(
"106"
,
"维保备案"
),
JG_USAGE_REGISTRATION
(
"107"
,
"使用登记"
),
JG_NAME_CHANGE_REGISTRATION
(
"108"
,
"更名变更登记"
),
JG_COMPANY_CHANGE_REGISTRATION
(
"109"
,
"单位变更登记"
),
JG_CHANGE_REGISTRATION
(
"110"
,
"移装变更登记"
),
JG_RENOVATION_REGISTRATION
(
"111"
,
"改造变更登记"
),
JG_EQUIPMENT_START
(
"112-1"
,
"设备启用"
),
JG_EQUIPMENT_STOP
(
"112-2"
,
"设备停用"
),
JG_EQUIPMENT_MOVE
(
"113-1"
,
"移装报废"
),
JG_EQUIPMENT_CANCEL
(
"113-2"
,
"注销报废"
),
JY_OPENING_APPLICATION
(
"114"
,
"业务开通"
),
JY_INSPECTION_APPLICATION_JD
(
"115"
,
"监督检验"
),
JY_INSPECTION_APPLICATION_DS
(
"116"
,
"定(首)检验"
),
JY_INSPECTION_APPLICATION_CHECK
(
"117"
,
"检验(含安全阀效验)"
);
private
final
String
code
;
private
final
String
name
;
BusinessTypeEnum
(
String
code
,
String
name
)
{
this
.
code
=
code
;
this
.
name
=
name
;
}
public
static
String
getNameByType
(
String
code
)
{
String
name
=
null
;
for
(
BusinessTypeEnum
enumOne
:
BusinessTypeEnum
.
values
())
{
if
(
enumOne
.
getCode
().
equals
(
code
))
{
name
=
enumOne
.
getName
();
break
;
}
}
return
name
;
}
public
String
getCode
()
{
return
code
;
}
public
String
getName
()
{
return
name
;
}
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-api/src/main/java/com/yeejoin/amos/boot/module/jyjc/api/model/JyjcInspectionApplicationModel.java
View file @
29e82a63
...
@@ -165,7 +165,7 @@ public class JyjcInspectionApplicationModel extends BaseModel {
...
@@ -165,7 +165,7 @@ public class JyjcInspectionApplicationModel extends BaseModel {
private
String
nextTaskId
;
private
String
nextTaskId
;
@ApiModelProperty
(
value
=
"下一步执行人Ids"
)
@ApiModelProperty
(
value
=
"下一步执行人Ids"
)
private
String
nextExcuteUserIds
;
private
String
nextEx
e
cuteUserIds
;
@ApiModelProperty
(
value
=
"下一步任务名称"
)
@ApiModelProperty
(
value
=
"下一步任务名称"
)
private
String
nextTaskName
;
private
String
nextTaskName
;
...
...
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-api/src/main/java/com/yeejoin/amos/boot/module/jyjc/api/model/TaskMessageDto.java
View file @
29e82a63
...
@@ -58,4 +58,6 @@ public class TaskMessageDto {
...
@@ -58,4 +58,6 @@ public class TaskMessageDto {
* 设备id、使用登记使用
* 设备id、使用登记使用
*/
*/
String
equipId
;
String
equipId
;
String
processKey
;
}
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/controller/JyjcInspectionApplicationController.java
View file @
29e82a63
...
@@ -81,22 +81,6 @@ public class JyjcInspectionApplicationController extends BaseController {
...
@@ -81,22 +81,6 @@ public class JyjcInspectionApplicationController extends BaseController {
}
}
/**
* 根据sequenceNbr更新
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@PutMapping
(
value
=
"/{sequenceNbr}"
)
@ApiOperation
(
httpMethod
=
"PUT"
,
value
=
"根据sequenceNbr更新"
,
notes
=
"根据sequenceNbr更新"
)
public
ResponseModel
<
JyjcInspectionApplicationModel
>
updateBySequenceNbrJyjcInspectionApplication
(
@RequestBody
JyjcInspectionApplicationModel
model
,
@PathVariable
(
value
=
"sequenceNbr"
)
Long
sequenceNbr
)
{
model
.
setSequenceNbr
(
sequenceNbr
);
return
ResponseHelper
.
buildResponse
(
jyjcInspectionApplicationServiceImpl
.
updateWithModel
(
model
));
}
/**
/**
* 根据sequenceNbr删除
* 根据sequenceNbr删除
*
*
...
...
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/service/impl/JyjcInspectionApplicationServiceImpl.java
View file @
29e82a63
...
@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
...
@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.CollectionUtils
;
import
com.baomidou.mybatisplus.core.toolkit.CollectionUtils
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.sun.org.apache.bcel.internal.generic.NEW
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
import
com.yeejoin.amos.boot.biz.common.utils.RedisKey
;
import
com.yeejoin.amos.boot.biz.common.utils.RedisKey
;
import
com.yeejoin.amos.boot.biz.common.utils.RedisUtils
;
import
com.yeejoin.amos.boot.biz.common.utils.RedisUtils
;
...
@@ -18,6 +19,7 @@ import com.yeejoin.amos.boot.module.common.api.dto.AttachmentDto;
...
@@ -18,6 +19,7 @@ import com.yeejoin.amos.boot.module.common.api.dto.AttachmentDto;
import
com.yeejoin.amos.boot.module.common.biz.utils.CommonResponseUtil
;
import
com.yeejoin.amos.boot.module.common.biz.utils.CommonResponseUtil
;
import
com.yeejoin.amos.boot.module.jyjc.api.entity.*
;
import
com.yeejoin.amos.boot.module.jyjc.api.entity.*
;
import
com.yeejoin.amos.boot.module.jyjc.api.enums.BizTypeEnum
;
import
com.yeejoin.amos.boot.module.jyjc.api.enums.BizTypeEnum
;
import
com.yeejoin.amos.boot.module.jyjc.api.enums.BusinessTypeEnum
;
import
com.yeejoin.amos.boot.module.jyjc.api.enums.DocumentEnum
;
import
com.yeejoin.amos.boot.module.jyjc.api.enums.DocumentEnum
;
import
com.yeejoin.amos.boot.module.jyjc.api.enums.ResultStatusEnum
;
import
com.yeejoin.amos.boot.module.jyjc.api.enums.ResultStatusEnum
;
import
com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionApplicationEquipMapper
;
import
com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionApplicationEquipMapper
;
...
@@ -26,6 +28,7 @@ import com.yeejoin.amos.boot.module.jyjc.api.model.*;
...
@@ -26,6 +28,7 @@ import com.yeejoin.amos.boot.module.jyjc.api.model.*;
import
com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionApplicationService
;
import
com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionApplicationService
;
import
com.yeejoin.amos.boot.module.jyjc.biz.feign.JgFeignClient
;
import
com.yeejoin.amos.boot.module.jyjc.biz.feign.JgFeignClient
;
import
com.yeejoin.amos.boot.module.jyjc.biz.feign.TzsServiceFeignClient
;
import
com.yeejoin.amos.boot.module.jyjc.biz.feign.TzsServiceFeignClient
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.TaskModelServiceImpl
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler.JyjcInspectionApplicationHandlerFactory
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler.JyjcInspectionApplicationHandlerFactory
;
import
com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum
;
import
com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum
;
import
com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum
;
import
com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum
;
...
@@ -34,13 +37,12 @@ import com.yeejoin.amos.component.feign.utils.FeignUtil;
...
@@ -34,13 +37,12 @@ import com.yeejoin.amos.component.feign.utils.FeignUtil;
import
com.yeejoin.amos.feign.privilege.Privilege
;
import
com.yeejoin.amos.feign.privilege.Privilege
;
import
com.yeejoin.amos.feign.systemctl.model.TaskV2Model
;
import
com.yeejoin.amos.feign.systemctl.model.TaskV2Model
;
import
com.yeejoin.amos.feign.workflow.Workflow
;
import
com.yeejoin.amos.feign.workflow.Workflow
;
import
com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO
;
import
com.yeejoin.amos.feign.workflow.model.*
;
import
com.yeejoin.amos.feign.workflow.model.AjaxResult
;
import
com.yeejoin.amos.feign.workflow.model.TaskResultDTO
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.io.IOUtils
;
import
org.apache.commons.io.IOUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.core.io.Resource
;
import
org.springframework.core.io.Resource
;
...
@@ -98,6 +100,8 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -98,6 +100,8 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
WorkflowFeignService
workflowFeignService
;
WorkflowFeignService
workflowFeignService
;
@Autowired
@Autowired
CommonserviceImpl
commonservice
;
CommonserviceImpl
commonservice
;
@Autowired
CmWorkflowServiceImpl
cmWorkflowService
;
@Value
(
"classpath:/json/bizTypeInfo.json"
)
@Value
(
"classpath:/json/bizTypeInfo.json"
)
private
Resource
bizTypeInfo
;
private
Resource
bizTypeInfo
;
...
@@ -109,6 +113,9 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -109,6 +113,9 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
@Autowired
@Autowired
private
RedisUtils
redisUtils
;
private
RedisUtils
redisUtils
;
@Autowired
TaskModelServiceImpl
taskModelService
;
public
JyjcInspectionApplicationModel
save
(
@RequestBody
JSONObject
obj
)
{
public
JyjcInspectionApplicationModel
save
(
@RequestBody
JSONObject
obj
)
{
ReginParams
reginParams
=
JSONObject
.
parseObject
(
redisUtils
.
get
(
RedisKey
.
buildReginKey
(
RequestContext
.
getExeUserId
(),
RequestContext
.
getToken
())).
toString
(),
ReginParams
.
class
);
ReginParams
reginParams
=
JSONObject
.
parseObject
(
redisUtils
.
get
(
RedisKey
.
buildReginKey
(
RequestContext
.
getExeUserId
(),
RequestContext
.
getToken
())).
toString
(),
ReginParams
.
class
);
...
@@ -118,38 +125,40 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -118,38 +125,40 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
model
.
setOperationType
(
"2"
);
model
.
setOperationType
(
"2"
);
}
}
ArrayList
<
String
>
roleListAll
=
new
ArrayList
<>();
ArrayList
<
String
>
roleListNext
=
new
ArrayList
<>();
if
(!
model
.
getOperationType
().
equals
(
"2"
))
{
if
(!
model
.
getOperationType
().
equals
(
"2"
))
{
String
taskName
=
""
;
String
taskName
=
""
;
if
(
model
.
getOperationType
().
equals
(
"0"
))
{
if
(
model
.
getOperationType
().
equals
(
"0"
))
{
List
<
ProcessTaskDTO
>
processTasks
=
new
ArrayList
<>();
ActWorkflowBatchDTO
actWorkflowBatchDTO
=
new
ActWorkflowBatchDTO
();
List
<
ActWorkflowStartDTO
>
list
=
new
ArrayList
<>();
ActWorkflowStartDTO
dto
=
new
ActWorkflowStartDTO
();
ActWorkflowStartDTO
dto
=
new
ActWorkflowStartDTO
();
dto
.
setProcessDefinitionKey
(
model
.
getProcessKey
());
dto
.
setProcessDefinitionKey
(
model
.
getProcessKey
());
dto
.
setBusinessKey
(
buildOrderNo
());
dto
.
setBusinessKey
(
String
.
valueOf
(
new
Date
().
getTime
()));
try
{
dto
.
setCompleteFirstTask
(
true
);
//开启报检流程工作流
list
.
add
(
dto
);
FeignClientResult
ajaxResult
=
Workflow
.
taskV2Client
.
startByVariable
(
dto
);
actWorkflowBatchDTO
.
setProcess
(
list
);
String
id
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
ajaxResult
.
getResult
()))
.
get
(
"id"
).
toString
();
dto
.
setNextExecuteUserCompanyCode
(
model
.
getInspectionUnitCode
());
// String id = ((Map) ajaxResult.getResult()).get("id").toString();
processTasks
=
cmWorkflowService
.
startBatch
(
actWorkflowBatchDTO
);
model
.
setProcessInstanceId
(
id
);
String
instanceId
=
processTasks
.
get
(
0
).
getProcessInstance
().
getId
();
execueFlow
(
MapBuilder
.<
String
,
Object
>
create
().
put
(
"op"
,
"提交"
).
put
(
"instanceId"
,
id
).
put
(
"comments"
,
""
).
build
());
String
nextTaskId
=
processTasks
.
get
(
0
).
getNextTask
().
get
(
0
).
getId
();
taskName
=
processTasks
.
get
(
0
).
getNextTask
().
get
(
0
).
getName
();
this
.
buildRoleList
(
processTasks
,
roleListNext
,
roleListAll
);
// region 获取下一个流程节点的数据
List
<
WorkflowResultDto
>
workflowResultDtos
=
taskModelService
.
buildWorkFlowInfo
(
processTasks
);
Map
<
String
,
Object
>
nextNodeInfo
=
workflowHelper
.
getNextWorkflowNode
(
model
.
getProcessInstanceId
());
String
nextUserIds
=
workflowResultDtos
.
get
(
0
).
getNextExecutorUserIds
();
String
role
=
(
String
)
nextNodeInfo
.
get
(
"role"
);
String
nextExcuteIds
=
workflowResultDtos
.
get
(
0
).
getNextExecutorRoleIds
();
taskName
=
(
String
)
nextNodeInfo
.
get
(
"taskName"
);
model
.
setProcessInstanceId
(
instanceId
);
model
.
setNextExecuteIds
(
role
);
if
(!
org
.
springframework
.
util
.
ObjectUtils
.
isEmpty
(
model
.
getWorkflowRole
()))
{
if
(!
org
.
springframework
.
util
.
ObjectUtils
.
isEmpty
(
model
.
getWorkflowRole
()))
{
model
.
setWorkflowRole
(
model
.
getWorkflowRole
()
+
","
+
nextExcuteIds
);
model
.
setWorkflowRole
(
model
.
getWorkflowRole
()
+
","
+
role
);
}
else
{
}
else
{
model
.
setWorkflowRole
(
nextExcuteIds
);
model
.
setWorkflowRole
(
role
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
model
.
setNextExecuteIds
(
nextExcuteIds
);
model
.
setNextTaskId
(
nextTaskId
);
model
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_SUBMITTED
.
getCode
()));
//6611 对应数据字典 检验流程状态 待受理
model
.
setNextTaskName
(
taskName
);
model
.
setNextExecuteUserIds
(
nextUserIds
);
model
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_SUBMITTED
.
getCode
()));
//6611 对应数据字典 检验流程状态 待受理
}
else
if
(
model
.
getOperationType
().
equals
(
"1"
))
{
}
else
if
(
model
.
getOperationType
().
equals
(
"1"
))
{
model
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_SUBMITTED
.
getCode
()));
model
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_SUBMITTED
.
getCode
()));
}
}
...
@@ -184,48 +193,39 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -184,48 +193,39 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
// equipInfo.setApplicationSeq(model.getSequenceNbr());
// equipInfo.setApplicationSeq(model.getSequenceNbr());
equipInfos
.
add
(
equipInfo
);
equipInfos
.
add
(
equipInfo
);
}
}
model
.
setEquList
(
model
.
getEquip
().
get
(
0
).
getOrDefault
(
"EQU_LIST"
,
""
).
toString
());
model
.
setSupervisoryCode
(
model
.
getEquip
().
get
(
0
).
getOrDefault
(
"SUPERVISORY_CODE"
,
""
).
toString
());
}
}
model
.
setCreateUserId
(
reginParams
.
getUserModel
().
getUserId
());
model
.
setCreateUserId
(
reginParams
.
getUserModel
().
getUserId
());
model
.
setNumberOfEquip
(
equipInfos
.
size
());
model
.
setNumberOfEquip
(
equipInfos
.
size
());
// endregion
if
(
null
==
model
.
getSequenceNbr
()){
if
(
null
==
model
.
getSequenceNbr
()){
model
=
this
.
createWithModel
(
model
);
model
=
this
.
createWithModel
(
model
);
}
else
{
}
else
{
model
=
this
.
updateWithModel
(
model
);
model
=
this
.
updateWithModel
(
model
);
}
}
String
json
=
null
;
try
{
json
=
IOUtils
.
toString
(
bizTypeInfo
.
getInputStream
(),
java
.
lang
.
String
.
valueOf
(
StandardCharsets
.
UTF_8
));
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
List
<
Map
>
list
=
parseArray
(
json
,
Map
.
class
);
String
url
=
null
;
for
(
Map
map
:
list
)
{
if
(
map
.
get
(
"type"
).
equals
(
model
.
getBizType
()
)&&
"look"
.
equals
(
map
.
get
(
"pageType"
))){
url
=
map
.
get
(
"url"
).
toString
();
}
}
// Map<String, Object> userOrgRoleMap = FeignUtil.remoteCall(() -> Privilege.userOrgRoleClient.getme());
// List<String> userOrgRoleList = (List<String>) userOrgRoleMap.get("roleId");
// String roleIds = String.join(",", userOrgRoleList);
String
urlParams
=
null
;
try
{
model
.
setEquip
(
null
);
urlParams
=
commonservice
.
toQueryParams
(
model
);
}
catch
(
UnsupportedEncodingException
e
)
{
e
.
printStackTrace
();
}
if
(
StringUtils
.
isNotBlank
(
model
.
getProcessInstanceId
())){
if
(
StringUtils
.
isNotBlank
(
model
.
getProcessInstanceId
())){
commonservice
.
buildTaskModel
(
MapBuilder
.<
String
,
Object
>
create
().
put
(
"instanceId"
,
model
.
getProcessInstanceId
()).
put
(
"startDate"
,
new
Date
())
this
.
createdTaskModel
(
model
);
.
put
(
"agencyCode"
,
reginParams
.
getUserModel
().
getAgencyCode
()).
put
(
"userId"
,
reginParams
.
getUserModel
().
getUserId
()).
put
(
"startUser"
,
reginParams
.
getUserModel
().
getUserId
()).
put
(
"startUserId"
,
reginParams
.
getUserModel
().
getUserId
())
}
else
{
.
put
(
"taskStatus"
,
FlowStatusEnum
.
TO_BE_PROCESSED
.
getCode
()).
put
(
"taskStatusLabel"
,
FlowStatusEnum
.
TO_BE_PROCESSED
.
getName
()).
put
(
"taskName"
,
taskName
).
put
(
"taskType"
,
model
.
getBizType
()).
put
(
"taskTypeLabel"
,
BizTypeEnum
.
getNameByCode
(
model
.
getBizType
())).
put
(
"taskContent"
,
""
)
TaskModelDto
dto
=
new
TaskModelDto
();
.
put
(
"taskTitle"
,
reginParams
.
getUserModel
().
getUserName
()+
"发起了"
+
taskName
).
put
(
"taskDesc"
,
""
).
put
(
"taskCode"
,
model
.
getApplicationNo
())
TaskMessageDto
ta
=
new
TaskMessageDto
();
.
put
(
"extras"
,
JSON
.
toJSONString
(
model
)).
put
(
"createUserId"
,
reginParams
.
getUserModel
().
getUserName
()).
put
(
"startUserId"
,
reginParams
.
getUserModel
().
getUserId
())
ta
.
setInstanceId
(
model
.
getProcessInstanceId
());
.
put
(
"routePath"
,
url
.
replace
(
"{userId}"
,
reginParams
.
getUserModel
().
getUserId
()).
replace
(
"{roleIds}"
,
model
.
getNextExecuteIds
())+
"&"
+
urlParams
)
ta
.
setStatus
(
model
.
getStatus
());
.
build
());
ta
.
setPromoter
(
model
.
getPromoter
());
ta
.
setNextExecuteUserIds
(
model
.
getNextExecuteUserIds
());
ta
.
setSequenceNbr
(
model
.
getSequenceNbr
());
dto
.
setModel
(
ta
);
//摘要 按原有规则组装
dto
.
setTaskContent
(
"来自"
+
model
.
getEquList
()+
"【"
+
model
.
getSupervisoryCode
()+
"】的业务办理,【申请单号:"
+
model
.
getApplicationNo
()+
"】"
);
//申请单号
dto
.
setTaskCode
(
model
.
getApplicationNo
());
//业务类型枚举code值
dto
.
setTaskType
(
model
.
getBizType
());
////业务主键
dto
.
setRelationId
(
model
.
getSequenceNbr
()+
""
);
taskModelService
.
buildTaskModel
(
Arrays
.
asList
(
dto
));
}
}
//保存报检装备监管码
//保存报检装备监管码
...
@@ -273,6 +273,8 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -273,6 +273,8 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
equipInfo
.
setApplicationSeq
(
model
.
getSequenceNbr
());
equipInfo
.
setApplicationSeq
(
model
.
getSequenceNbr
());
jyjcInspectionApplicationEquipService
.
save
(
equipInfo
);
jyjcInspectionApplicationEquipService
.
save
(
equipInfo
);
}
}
model
.
setEquList
(
model
.
getEquip
().
get
(
0
).
getOrDefault
(
"EQU_LIST"
,
""
).
toString
());
model
.
setSupervisoryCode
(
model
.
getEquip
().
get
(
0
).
getOrDefault
(
"SUPERVISORY_CODE"
,
""
).
toString
());
}
}
// Map<String, Object> map = BeanUtil.beanToMap(model);
// Map<String, Object> map = BeanUtil.beanToMap(model);
...
@@ -291,58 +293,45 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -291,58 +293,45 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
}
}
}
}
model
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_SUBMITTED
.
getCode
()));
//6611 对应数据字典 检验流程状态 待受理
model
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_SUBMITTED
.
getCode
()));
//6611 对应数据字典 检验流程状态 待受理
execueFlow
(
MapBuilder
.<
String
,
Object
>
create
().
put
(
"op"
,
"提交"
).
put
(
"instanceId"
,
model
.
getProcessInstanceId
()).
put
(
"comments"
,
""
).
build
());
Map
<
String
,
Object
>
nextNodeInfo
=
workflowHelper
.
getNextWorkflowNode
(
model
.
getProcessInstanceId
());
ArrayList
<
String
>
roleList
=
new
ArrayList
<>();
String
role
=
(
String
)
nextNodeInfo
.
get
(
"role"
);
String
taskId
=
model
.
getNextTaskId
();
String
taskName
=
(
String
)
nextNodeInfo
.
get
(
"taskName"
);
//组装信息
model
.
setNextExecuteIds
(
role
);
TaskResultDTO
task
=
new
TaskResultDTO
();
model
.
setPromoter
(
reginParams
.
getUserModel
().
getUserId
());
task
.
setResultCode
(
"approvalStatus"
);
task
.
setTaskId
(
taskId
);
task
.
setComment
(
""
);
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"approvalStatus"
,
"提交"
);
task
.
setVariable
(
map
);
//执行流程
task
.
setNextExecuteUserCompanyCode
(
model
.
getInspectionUnitCode
());
ProcessTaskDTO
processTaskDTO
=
cmWorkflowService
.
complete
(
taskId
,
task
);
String
taskCode
=
FlowStatusEnum
.
TO_SUBMITTED
.
getName
();
String
taskName1
=
""
;
String
nextTaskId
=
""
;
this
.
buildRoleList
(
Collections
.
singletonList
(
processTaskDTO
),
roleList
,
roleListAll
);
List
<
WorkflowResultDto
>
workflowResultDtos
=
taskModelService
.
buildWorkFlowInfo
(
Collections
.
singletonList
(
processTaskDTO
));
String
nextUserIds
=
workflowResultDtos
.
get
(
0
).
getNextExecutorUserIds
();
if
(
processTaskDTO
!=
null
&&
processTaskDTO
.
getNextTask
()
!=
null
&&
processTaskDTO
.
getNextTask
().
size
()
>
0
){
taskCode
=
processTaskDTO
.
getNextTask
().
get
(
0
).
getKey
();
taskName1
=
processTaskDTO
.
getNextTask
().
get
(
0
).
getName
();
nextTaskId
=
processTaskDTO
.
getNextTask
().
get
(
0
).
getId
();
}
model
.
setNextExecuteIds
(
String
.
join
(
","
,
roleList
));
if
(!
org
.
springframework
.
util
.
ObjectUtils
.
isEmpty
(
model
.
getWorkflowRole
()))
{
if
(!
org
.
springframework
.
util
.
ObjectUtils
.
isEmpty
(
model
.
getWorkflowRole
()))
{
model
.
setWorkflowRole
(
model
.
getWorkflowRole
()
+
","
+
role
);
model
.
setWorkflowRole
(
model
.
getWorkflowRole
()
+
","
+
String
.
join
(
","
,
roleList
)
);
}
else
{
}
else
{
model
.
setWorkflowRole
(
role
);
model
.
setWorkflowRole
(
String
.
join
(
","
,
roleList
)
);
}
}
model
.
setNextTaskId
(
nextTaskId
);
model
.
setPromoter
(
RequestContext
.
getExeUserId
());
model
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_SUBMITTED
.
getCode
()));
model
.
setStatusName
(
FlowStatusEnum
.
TO_SUBMITTED
.
getName
());
model
.
setNextTaskName
(
taskName1
);
executeOneStep
(
model
,
taskName1
,
nextUserIds
);
model
.
setNextExecuteIds
(
nextUserIds
);
this
.
updateWithModel
(
model
);
this
.
updateWithModel
(
model
);
String
json
=
null
;
try
{
json
=
IOUtils
.
toString
(
bizTypeInfo
.
getInputStream
(),
java
.
lang
.
String
.
valueOf
(
StandardCharsets
.
UTF_8
));
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
List
<
Map
>
list
=
parseArray
(
json
,
Map
.
class
);
String
url
=
null
;
for
(
Map
map
:
list
)
{
if
(
map
.
get
(
"type"
).
equals
(
model
.
getBizType
()
)&&
"look"
.
equals
(
map
.
get
(
"pageType"
))){
url
=
map
.
get
(
"url"
).
toString
();
}
}
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"relationId"
,
model
.
getProcessInstanceId
());
params
.
put
(
"taskStatus"
,
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
());
params
.
put
(
"taskStatusLabel"
,
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
());
TaskV2Model
taskV2Model
=
commonservice
.
updateTaskModel
(
params
);
// Map<String, Object> userOrgRoleMap = FeignUtil.remoteCall(() -> Privilege.userOrgRoleClient.getme());
// List<String> userOrgRoleList = (List<String>) userOrgRoleMap.get("roleId");
// String roleIds = String.join(",", userOrgRoleList);
String
urlParams
=
null
;
try
{
model
.
setEquip
(
null
);
urlParams
=
commonservice
.
toQueryParams
(
model
);
}
catch
(
UnsupportedEncodingException
e
)
{
e
.
printStackTrace
();
}
commonservice
.
buildTaskModel
(
MapBuilder
.<
String
,
Object
>
create
().
put
(
"instanceId"
,
model
.
getProcessInstanceId
()).
put
(
"startDate"
,
new
Date
())
.
put
(
"agencyCode"
,
reginParams
.
getUserModel
().
getAgencyCode
()).
put
(
"userId"
,
reginParams
.
getUserModel
().
getUserId
()).
put
(
"startUser"
,
reginParams
.
getUserModel
().
getUserId
()).
put
(
"startUserId"
,
reginParams
.
getUserModel
().
getUserId
())
.
put
(
"taskStatus"
,
FlowStatusEnum
.
TO_BE_PROCESSED
.
getCode
()).
put
(
"taskStatusLabel"
,
FlowStatusEnum
.
TO_BE_PROCESSED
.
getName
()).
put
(
"taskName"
,
taskName
).
put
(
"taskType"
,
model
.
getBizType
()).
put
(
"taskTypeLabel"
,
BizTypeEnum
.
getNameByCode
(
model
.
getBizType
())).
put
(
"taskContent"
,
""
)
.
put
(
"taskTitle"
,
reginParams
.
getUserModel
().
getUserName
()+
"发起了"
+
taskName
).
put
(
"taskDesc"
,
""
).
put
(
"taskCode"
,
model
.
getApplicationNo
())
.
put
(
"extras"
,
JSON
.
toJSONString
(
model
)).
put
(
"createUserId"
,
reginParams
.
getUserModel
().
getUserName
()).
put
(
"startUserId"
,
reginParams
.
getUserModel
().
getUserId
())
.
put
(
"routePath"
,
url
.
replace
(
"{userId}"
,
reginParams
.
getUserModel
().
getUserId
()).
replace
(
"{roleIds}"
,
model
.
getNextExecuteIds
())+
"&"
+
urlParams
)
// .put("routePath",url.replace("{sequenceNbr}",String.valueOf(model.getSequenceNbr())).replace("{userId}",reginParams.getUserModel().getUserId()).replace("{roleIds}",roleIds))
.
build
());
}
}
return
model
;
return
model
;
}
}
...
@@ -592,21 +581,46 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -592,21 +581,46 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
log
.
warn
(
"JyjcInspectionApplicationModel Not Found!sequenceNbr => "
+
sequenceNbr
);
log
.
warn
(
"JyjcInspectionApplicationModel Not Found!sequenceNbr => "
+
sequenceNbr
);
return
false
;
return
false
;
}
}
try
{
String
taskCode
=
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
();
// 撤回流程
String
[]
taskName
=
new
String
[]{
"流程结束"
};
JSONObject
jsonObject
=
workflowHelper
.
rollBack
(
inspectionApplicationModel
.
getProcessInstanceId
());
// FeignClientResult ajaxResult = Workflow.taskV2Client.rollBack(noticeDto.getInstanceId());
if
(
ObjectUtils
.
isEmpty
(
jsonObject
)
||
200
!=
jsonObject
.
getInteger
(
"status"
))
{
List
<
String
>
roleListNext
=
new
ArrayList
<>();
log
.
error
(
"撤回工作流错误, => {}"
,
jsonObject
);
List
<
String
>
roleListAll
=
new
ArrayList
<>();
return
false
;
ProcessTaskDTO
processTaskDTO
=
cmWorkflowService
.
rollBack
(
inspectionApplicationModel
.
getProcessInstanceId
());
}
String
nextTaskId
=
processTaskDTO
.
getNextTask
().
get
(
0
).
getId
();
this
.
buildRoleList
(
Collections
.
singletonList
(
processTaskDTO
),
roleListNext
,
roleListAll
);
List
<
WorkflowResultDto
>
workflowResultDtos
=
taskModelService
.
buildWorkFlowInfo
(
Collections
.
singletonList
(
processTaskDTO
));
if
(!
org
.
springframework
.
util
.
ObjectUtils
.
isEmpty
(
inspectionApplicationModel
.
getWorkflowRole
()))
{
inspectionApplicationModel
.
setWorkflowRole
(
inspectionApplicationModel
.
getWorkflowRole
()
+
","
+
roleListAll
);
}
else
{
inspectionApplicationModel
.
setWorkflowRole
(
inspectionApplicationModel
);
}
// 待调整
taskCode
=
processTaskDTO
.
getNextTask
().
get
(
0
).
getKey
();
inspectionApplicationModel
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
ROLLBACK
.
getCode
()));
inspectionApplicationModel
.
setStatusName
(
FlowStatusEnum
.
ROLLBACK
.
getName
());
inspectionApplicationModel
.
setPromoter
(
""
);
inspectionApplicationModel
.
setNextTaskId
(
nextTaskId
);
inspectionApplicationModel
.
setNextExecuteUserIds
(
workflowResultDtos
.
get
(
0
).
getNextExecutorUserIds
());
inspectionApplicationModel
.
setNextExecuteIds
(
String
.
join
(
","
,
roleListNext
));
JyjcInspectionApplication
jyjcInspectionApplication
=
new
JyjcInspectionApplication
();
BeanUtils
.
copyProperties
(
inspectionApplicationModel
,
jyjcInspectionApplication
);
this
.
getBaseMapper
().
updateById
(
jyjcInspectionApplication
);
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
inspectionApplicationModel
));
jsonObject
.
put
(
"nextTaskId"
,
inspectionApplicationModel
.
getNextTaskId
());
jsonObject
.
put
(
"nextExecuteUser"
,
inspectionApplicationModel
.
getNextExecuteIds
());
jsonObject
.
put
(
"taskType"
,
BusinessTypeEnum
.
g
);
jsonObject
.
put
(
"flowStatus"
,
FlowStatusEnum
.
ROLLBACK
.
getCode
());
jsonObject
.
put
(
"flowStatusLabel"
,
FlowStatusEnum
.
ROLLBACK
.
getName
());
taskModelService
.
rollbackTask
(
inspectionApplicationModel
.
getProcessInstanceId
(),
jsonObject
);
updateModelByInstanceId
(
inspectionApplicationModel
.
getSequenceNbr
(),
inspectionApplicationModel
.
getProcessInstanceId
(),
MapBuilder
.<
String
,
Object
>
create
().
put
(
"status"
,
FlowStatusEnum
.
ROLLBACK
.
getCode
()
+
""
).
build
(),
true
);
updateModelByInstanceId
(
inspectionApplicationModel
.
getSequenceNbr
(),
inspectionApplicationModel
.
getProcessInstanceId
(),
MapBuilder
.<
String
,
Object
>
create
().
put
(
"status"
,
FlowStatusEnum
.
ROLLBACK
.
getCode
()
+
""
).
build
(),
true
);
commonservice
.
deleteTaskModel
(
inspectionApplicationModel
.
getProcessInstanceId
());
return
true
;
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
"撤回工作流错误, => {}"
,
inspectionApplicationModel
.
getProcessInstanceId
(),
e
);
return
false
;
}
}
}
public
void
updateModelByInstanceId
(
Long
sequenceNbr
,
String
instanceId
,
Map
<
String
,
Object
>
params
,
Boolean
rollBack
)
{
public
void
updateModelByInstanceId
(
Long
sequenceNbr
,
String
instanceId
,
Map
<
String
,
Object
>
params
,
Boolean
rollBack
)
{
...
@@ -656,4 +670,96 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -656,4 +670,96 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
this
.
updateById
(
entity
);
this
.
updateById
(
entity
);
}
}
private
void
buildRoleList
(
List
<
ProcessTaskDTO
>
processTasks
,
List
<
String
>
roleListNext
,
List
<
String
>
roleListAll
)
{
processTasks
.
forEach
(
p
->
{
p
.
getNextCandidateGroups
().
values
().
forEach
(
e
->
{
roleListNext
.
addAll
(
e
);
roleListAll
.
addAll
(
e
);
});
roleListAll
.
addAll
(
p
.
getCandidateGroups
());
});
}
private
void
createdTaskModel
(
JyjcInspectionApplicationModel
model
){
ReginParams
reginParams
=
JSONObject
.
parseObject
(
redisUtils
.
get
(
RedisKey
.
buildReginKey
(
RequestContext
.
getExeUserId
(),
RequestContext
.
getToken
())).
toString
(),
ReginParams
.
class
);
TaskModelDto
dto
=
new
TaskModelDto
();
TaskMessageDto
ta
=
new
TaskMessageDto
();
ta
.
setInstanceId
(
model
.
getProcessInstanceId
());
ta
.
setStatus
(
model
.
getStatus
());
ta
.
setPromoter
(
model
.
getPromoter
());
ta
.
setNextExecuteUserIds
(
model
.
getNextExecuteUserIds
());
ta
.
setSequenceNbr
(
model
.
getSequenceNbr
());
ta
.
setProcessKey
(
model
.
getProcessKey
());
dto
.
setModel
(
ta
);
dto
.
setFlowCreateDate
(
new
Date
());
dto
.
setTaskName
(
model
.
getNextTaskName
());
dto
.
setFlowCode
(
model
.
getNextTaskId
());
dto
.
setTaskContent
(
"来自"
+
model
.
getEquList
()+
"【"
+
model
.
getSupervisoryCode
()+
"】的业务办理,【申请单号:"
+
model
.
getApplicationNo
()+
"】"
);
dto
.
setTaskCode
(
model
.
getApplicationNo
());
dto
.
setTaskType
(
model
.
getBizType
());
dto
.
setTaskTypeLabel
(
BizTypeEnum
.
getNameByCode
(
model
.
getBizType
()));
dto
.
setRelationId
(
model
.
getInstanceId
());
dto
.
setExecuteUserIds
(
model
.
getNextExecuteUserIds
());
dto
.
setTaskStatusLabel
(
"未处理"
);
dto
.
setFlowStatus
(
Integer
.
valueOf
(
model
.
getStatus
()));
dto
.
setFlowStatusLabel
(
FlowStatusEnum
.
TO_BE_PROCESSED
.
getName
());
dto
.
setStartUserId
(
RequestContext
.
getExeUserId
());
dto
.
setStartUser
(
model
.
getCreateUserId
());
dto
.
setStartUserCompanyName
(
reginParams
.
getCompany
().
getCompanyName
());
dto
.
setStartDate
(
new
Date
());
dto
.
setNextExecuteUser
(
model
.
getNextExecuteIds
());
taskModelService
.
buildTaskModel
(
Arrays
.
asList
(
dto
));
}
private
void
executeOneStep
(
JyjcInspectionApplicationModel
model
,
String
taskName
,
String
nextUserIds
)
{
// 先更新之前的待办
TaskV2Model
taskV2Model
=
updateTaskModel
(
model
);
taskV2Model
.
setTaskDesc
(
""
);
taskV2Model
.
setTaskName
(
taskName
);
taskV2Model
.
setTaskCode
(
model
.
getApplicationNo
());
taskV2Model
.
setExecuteUserIds
(
nextUserIds
);
taskV2Model
.
setRelationId
(
model
.
getProcessInstanceId
());
taskV2Model
.
setTaskStatus
(
Integer
.
valueOf
(
model
.
getStatus
()));
taskV2Model
.
setTaskStatusLabel
(
model
.
getStatusName
());
taskV2Model
.
setFlowStatus
(
Integer
.
valueOf
(
model
.
getStatus
()));
taskV2Model
.
setFlowStatusLabel
(
model
.
getStatusName
());
// taskV2Model.setTaskType(BusinessTypeEnum.JG_COMPANY_CHANGE_REGISTRATION.getCode());
// taskV2Model.setStartUser(jgChangeRegistrationName.getCreateUserName());
// taskV2Model.setTaskTypeLabel(BusinessTypeEnum.JG_COMPANY_CHANGE_REGISTRATION.getName());
// taskV2Model.setStartDate(jgChangeRegistrationName.getCreateDate());
// taskV2Model.setStartUserId(jgChangeRegistrationName.getCreateUserId());
// taskV2Model.setStartUserCompanyName(jgChangeRegistrationName.getUseUnitName());
taskV2Model
.
setExecuteUserIds
(
nextUserIds
);
TaskModelDto
modelDto
=
new
TaskModelDto
();
BeanUtil
.
copyProperties
(
taskV2Model
,
modelDto
);
modelDto
.
setNextExecuteUser
(
model
.
getNextExecuteIds
());
if
(
model
.
getStatus
().
equals
(
FlowStatusEnum
.
REJECTED
.
getCode
())){
modelDto
.
setPageType
(
"edit"
);
}
TaskMessageDto
obj
=
new
TaskMessageDto
();
obj
.
setInstanceId
(
model
.
getProcessInstanceId
());
obj
.
setStatus
(
model
.
getStatus
());
obj
.
setPromoter
(
model
.
getPromoter
());
obj
.
setNextExecuteUserIds
(
model
.
getNextExecuteUserIds
());
obj
.
setSequenceNbr
(
model
.
getSequenceNbr
());
modelDto
.
setModel
(
obj
);
// 再插入新代办、数据待定
taskModelService
.
buildTaskModel
(
Collections
.
singletonList
(
modelDto
));
}
private
TaskV2Model
updateTaskModel
(
JyjcInspectionApplicationModel
model
)
{
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"relationId"
,
model
.
getInstanceId
());
params
.
put
(
"taskStatus"
,
model
.
getStatus
());
params
.
put
(
"taskStatusLabel"
,
model
.
getStatusName
());
params
.
put
(
"flowStatus"
,
model
.
getStatus
());
params
.
put
(
"flowStatusLabel"
,
model
.
getStatusName
());
params
.
put
(
"model"
,
model
);
return
taskModelService
.
updateTaskModel
(
params
);
}
}
}
\ No newline at end of file
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/resources/json/bizTypeInfo.json
View file @
29e82a63
[
[
{
"type"
:
"supervise"
,
"pageType"
:
"draft"
,
"url"
:
"/mixuap?appId=1742358052905971713&id=1734576595978448898&roleIds={roleIds}&userId={userId}&pageType=edit"
},
{
"type"
:
"firstinspect"
,
"pageType"
:
"draft"
,
"url"
:
"/mixuap?appId=1742358052905971713&id=1736728282272919554&roleIds={roleIds}&userId={userId}&pageType=edit"
},
{
"type"
:
"detection"
,
"pageType"
:
"draft"
,
"url"
:
"/mixuap?appId=1742358052905971713&id=1736733779709423618&roleIds={roleIds}&userId={userId}&pageType=edit"
},
{
{
"type"
:
"supervise"
,
"type"
:
"supervise"
,
"pageType"
:
"look"
,
"pageType"
:
"look"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment