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
196baf06
Commit
196baf06
authored
Jan 18, 2024
by
chenzhao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
迁移工具类
parent
eb0b9a8a
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
778 additions
and
0 deletions
+778
-0
TaskMessageDto.java
...ejoin/amos/boot/module/jyjc/api/model/TaskMessageDto.java
+61
-0
TaskModelDto.java
...yeejoin/amos/boot/module/jyjc/api/model/TaskModelDto.java
+110
-0
WorkflowResultDto.java
...in/amos/boot/module/jyjc/api/model/WorkflowResultDto.java
+53
-0
LocalBadRequest.java
...oin/amos/boot/module/jyjc/biz/config/LocalBadRequest.java
+14
-0
ICmWorkflowService.java
...amos/boot/module/jyjc/biz/service/ICmWorkflowService.java
+18
-0
TaskModelServiceImpl.java
...os/boot/module/jyjc/biz/service/TaskModelServiceImpl.java
+436
-0
CmWorkflowServiceImpl.java
...t/module/jyjc/biz/service/impl/CmWorkflowServiceImpl.java
+69
-0
JsonUtils.java
...om/yeejoin/amos/boot/module/jyjc/biz/utils/JsonUtils.java
+17
-0
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/model/TaskMessageDto.java
0 → 100644
View file @
196baf06
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
api
.
model
;
import
lombok.Data
;
@Data
public
class
TaskMessageDto
{
/**
* 流程实例id
*/
String
instanceId
;
/**
* 流程状态
*/
String
status
;
/**
* 上一步操作人id
*/
String
promoter
;
/**
* 下个节点可操作人ids
*/
String
nextExecuteUserIds
;
/**
* 业务数据id
*/
Long
sequenceNbr
;
/**
* 下个节点可操作角色ids
*/
String
nextExecuteIds
;
/**
* 移装/安装 告知状态
*/
String
noticeStatus
;
/**
* 登记 告知状态
*/
String
auditStatus
;
/**
* 设备移交
*/
String
applyStatus
;
/**
* 流程创建(发起)人
*/
String
createUserId
;
/**
* 设备id、使用登记使用
*/
String
equipId
;
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-api/src/main/java/com/yeejoin/amos/boot/module/jyjc/api/model/TaskModelDto.java
0 → 100644
View file @
196baf06
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
api
.
model
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Date
;
/**
* @author Administrator
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
TaskModelDto
{
/**
* 工作流创建时间
*/
private
Date
flowCreateDate
;
/**
* 工作流返回节点名称
*/
private
String
taskName
;
/**
* 任务编号 可以使用申请单编号
*/
private
String
taskCode
;
/**
* 流程任务ID
*/
private
String
flowCode
;
/**
* 统一定义的枚举code 例如 6612 待受理
*/
private
Integer
flowStatus
;
/**
* 统一定义的枚举code 例如 6612 待受理
*/
private
String
flowStatusLabel
;
/**
* 摘要-来源
*/
private
String
taskContent
;
/**
* 描述-非必输
*/
private
String
taskDesc
;
/**
* 任务类型 从BusinessTypeEnum中获取自己对应类型code
**/
private
String
taskType
;
/**
* 任务类型名称 汉字 从BusinessTypeEnum中获取自己对应类型名称
**/
private
String
taskTypeLabel
;
/***
* 关联id 传工作流实例id
* */
private
String
relationId
;
/**
* 执行人id 从工作流中获取
**/
private
String
executeUserIds
;
/**
* 任务状态 操作名称 0 待处理 1驳回 2通过 3重新提交
*/
private
Integer
taskStatus
;
/**
* 任务状态 操作名称 0 待处理 1驳回 2通过 3重新提交
*/
private
String
taskStatusLabel
;
/**
* 任务发起人id 不变 第一次提交的人
* 从业务表中 created_uesr_id
*/
private
String
startUserId
;
/**
* 任务发起人名称 不变
* 名字
*/
private
String
startUser
;
/**
* 任务发起人所在单位 不变
*/
private
String
startUserCompanyName
;
/**
* 任务发起人发起时间 不变
*/
private
Date
startDate
;
/**
* 跳转路径
*/
private
String
routePath
;
/**
* 当前业务实体对象
*/
private
Object
model
;
/**
* 下一节点执行角色
*/
private
String
nextExecuteUser
;
/**
* 是否跳转编辑页面
* */
private
String
pageType
;
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-api/src/main/java/com/yeejoin/amos/boot/module/jyjc/api/model/WorkflowResultDto.java
0 → 100644
View file @
196baf06
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
api
.
model
;
import
lombok.Data
;
@Data
public
class
WorkflowResultDto
{
/**
* WORKFLOW实例ids
* */
String
instanceId
;
/**
* 执行人角色
* */
String
executorRoleIds
;
String
startUserId
;
String
startUserName
;
String
executorId
;
String
executorName
;
/**
* 下一步执行人角色
* */
String
nextExecutorRoleIds
;
String
nextTaskId
;
/**
* 下一步执行人用户id 待办用
* */
String
nextExecutorUserIds
;
/**
* 当前节点任务名称
* */
String
taskName
;
/**
* 下一节点任务名称
* */
String
nextTaskName
;
/**
*
* 下一节点code
*/
String
nextTaskCode
;
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/config/LocalBadRequest.java
0 → 100644
View file @
196baf06
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
biz
.
config
;
import
org.typroject.tyboot.core.foundation.exception.BaseException
;
public
class
LocalBadRequest
extends
BaseException
{
public
LocalBadRequest
(
String
message
)
{
super
(
message
,
com
.
yeejoin
.
amos
.
component
.
robot
.
BadRequest
.
class
.
getSimpleName
(),
message
);
this
.
httpStatus
=
500
;
}
}
\ No newline at end of file
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/service/ICmWorkflowService.java
0 → 100644
View file @
196baf06
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
biz
.
service
;
import
com.yeejoin.amos.feign.workflow.model.ActWorkflowBatchDTO
;
import
com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO
;
import
com.yeejoin.amos.feign.workflow.model.TaskResultDTO
;
import
java.util.List
;
/**
* @author Administrator
*/
public
interface
ICmWorkflowService
{
List
<
ProcessTaskDTO
>
startBatch
(
ActWorkflowBatchDTO
params
);
ProcessTaskDTO
complete
(
String
taskId
,
TaskResultDTO
data
);
ProcessTaskDTO
rollBack
(
String
processInstanceId
);
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/service/TaskModelServiceImpl.java
0 → 100644
View file @
196baf06
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
biz
.
service
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.collection.CollectionUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
import
com.yeejoin.amos.boot.biz.common.entity.DataDictionary
;
import
com.yeejoin.amos.boot.biz.common.service.IDataDictionaryService
;
import
com.yeejoin.amos.boot.biz.common.utils.RedisKey
;
import
com.yeejoin.amos.boot.biz.common.utils.RedisUtils
;
import
com.yeejoin.amos.boot.module.jyjc.api.enums.BizTypeEnum
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.TaskModelDto
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.WorkflowResultDto
;
import
com.yeejoin.amos.boot.module.jyjc.biz.utils.JsonUtils
;
import
com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum
;
import
com.yeejoin.amos.feign.privilege.model.AgencyUserModel
;
import
com.yeejoin.amos.feign.systemctl.Systemctl
;
import
com.yeejoin.amos.feign.systemctl.model.TaskV2Model
;
import
com.yeejoin.amos.feign.workflow.model.ActTaskDTO
;
import
com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.core.io.Resource
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.ObjectUtils
;
import
org.typroject.tyboot.core.foundation.context.RequestContext
;
import
java.io.UnsupportedEncodingException
;
import
java.lang.reflect.Field
;
import
java.lang.reflect.Modifier
;
import
java.net.URLEncoder
;
import
java.util.*
;
import
java.util.stream.Collectors
;
public
class
TaskModelServiceImpl
{
@Autowired
private
RedisUtils
redisUtils
;
@Autowired
IDataDictionaryService
iDataDictionaryService
;
@Value
(
"classpath:/json/bizTypeInfo.json"
)
private
Resource
urlInfo
;
public
void
deleteTaskModel
(
String
id
)
{
List
<
TaskV2Model
>
result
=
Systemctl
.
taskV2Client
.
selectListByRelationId
(
id
).
getResult
();
if
(
result
.
size
()
>
0
){
List
<
Long
>
idList
=
result
.
stream
().
map
(
TaskV2Model:
:
getSequenceNbr
).
collect
(
Collectors
.
toList
());
String
ids
=
idList
.
stream
().
map
(
Object:
:
toString
).
collect
(
Collectors
.
joining
(
","
));
Systemctl
.
taskV2Client
.
delete
(
ids
);
}
}
/**
* 待办新增接口
**/
public
void
buildTaskModel
(
List
<
TaskModelDto
>
list
)
{
List
<
TaskV2Model
>
taskV2Models
=
new
ArrayList
<>();
for
(
TaskModelDto
obj
:
list
)
{
//判断是否是暂存 新增若无下一节点执行人即为暂存
boolean
flag
=
StringUtils
.
isEmpty
(
obj
.
getNextExecuteUser
())?
true
:
false
;
if
(
flag
){
List
<
TaskV2Model
>
result
=
Systemctl
.
taskV2Client
.
selectListByRelationId
(
obj
.
getRelationId
()).
getResult
();
if
(
CollectionUtil
.
isNotEmpty
(
result
)
&&
result
.
size
()
>
0
){
break
;
}
}
ReginParams
reginParams
=
JSONObject
.
parseObject
(
redisUtils
.
get
(
RedisKey
.
buildReginKey
(
RequestContext
.
getExeUserId
(),
RequestContext
.
getToken
())).
toString
(),
ReginParams
.
class
);
TaskV2Model
model
=
new
TaskV2Model
();
BeanUtil
.
copyProperties
(
obj
,
model
);
String
urlParams
=
""
;
try
{
urlParams
=
"&"
+
toQueryParams
(
obj
.
getModel
());
}
catch
(
UnsupportedEncodingException
e
)
{
e
.
printStackTrace
();
}
List
<
Map
>
urlList
=
JsonUtils
.
getResourceList
(
urlInfo
);
for
(
Map
map
:
urlList
)
{
//获取暂存的可编辑页面url
if
(
flag
&&
map
.
get
(
"type"
).
equals
(
obj
.
getTaskType
())
&&
map
.
get
(
"pageType"
).
equals
(
"draft"
)){
model
.
setRoutePath
(
map
.
get
(
"url"
).
toString
()+
urlParams
);
break
;
}
//其他逻辑均按详情页面获取
else
if
(
map
.
get
(
"type"
).
equals
(
obj
.
getTaskType
())
&&
map
.
get
(
"pageType"
).
equals
(
null
==
obj
.
getPageType
()?
"look"
:
obj
.
getPageType
()))
{
model
.
setRoutePath
(
map
.
get
(
"url"
).
toString
().
replace
(
"{roleIds}"
,
obj
.
getNextExecuteUser
())
+
urlParams
+
"&nextExecuteUserIds="
+
model
.
getExecuteUserIds
());
break
;
}
}
//是true则为暂存 除公共部分统一处理
if
(
flag
){
model
.
setFlowStatus
(
FlowStatusEnum
.
TO_BE_SUBMITTED
.
getCode
());
model
.
setFlowStatusLabel
(
FlowStatusEnum
.
TO_BE_SUBMITTED
.
getName
());
model
.
setStartUserId
(
RequestContext
.
getExeUserId
());
model
.
setStartUser
(
reginParams
.
getUserModel
().
getRealName
());
model
.
setStartUserCompanyName
(
reginParams
.
getCompany
().
getCompanyName
());
model
.
setStartDate
(
new
Date
());
model
.
setExecuteUserIds
(
RequestContext
.
getExeUserId
());
model
.
setFlowCreateDate
(
new
Date
());
model
.
setTaskStatus
(
FlowStatusEnum
.
TO_BE_SUBMITTED
.
getCode
());
model
.
setTaskTitle
(
"有一条待提交的草稿"
);
model
.
setTaskName
(
BizTypeEnum
.
getNameByCode
(
obj
.
getTaskType
()));
model
.
setTaskTypeLabel
(
BizTypeEnum
.
getNameByCode
(
obj
.
getTaskType
()));
// model.setTaskContent("【申请单号:"+obj.getTaskCode()+"】待提交");
}
else
{
model
.
setTaskStatus
(
0
);
model
.
setTaskTitle
(
obj
.
getStartUser
()
+
"发起了"
+
obj
.
getTaskName
());
}
model
.
setFlowInstanceId
(
model
.
getRelationId
());
model
.
setTaskSource
(
"workFlow"
);
model
.
setExtras
(
JSON
.
toJSONString
(
obj
.
getModel
()));
// model.setTerminal(params.getOrDefault("terminal","WEB").toString());
model
.
setCreateDate
(
new
Date
());
model
.
setRecUserId
(
RequestContext
.
getExeUserId
());
model
.
setAgencyCode
(
RequestContext
.
getAgencyCode
());
taskV2Models
.
add
(
model
);
}
Systemctl
.
taskV2Client
.
batchAdd
(
taskV2Models
);
}
/**
* 待办编辑接口
* 参数
* taskStatus
* taskStatusLabel 操作名称 6614驳回 6616已完成 6612待受理
* flowStatusLabel 任务状态枚举code
* 流程实例id instanceId
* flowCode 任务id
**/
public
TaskV2Model
updateTaskModel
(
Map
<
String
,
Object
>
params
)
{
String
exeUserId
=
RequestContext
.
getExeUserId
();
List
<
TaskV2Model
>
result
=
Systemctl
.
taskV2Client
.
selectListByRelationId
(
params
.
get
(
"relationId"
).
toString
()).
getResult
();
List
<
TaskV2Model
>
collect
=
result
.
stream
().
sorted
((
r1
,
r2
)
->
r2
.
getSequenceNbr
().
compareTo
(
r1
.
getSequenceNbr
())).
collect
(
Collectors
.
toList
());
if
(
collect
==
null
||
collect
.
size
()
==
0
)
{
return
null
;
}
collect
.
get
(
0
).
setFlowStatus
(
Integer
.
valueOf
(
params
.
get
(
"flowStatus"
).
toString
()));
collect
.
get
(
0
).
setFlowStatusLabel
(
params
.
get
(
"flowStatusLabel"
).
toString
());
collect
.
get
(
0
).
setTaskStatus
(
Integer
.
valueOf
(
params
.
get
(
"taskStatus"
).
toString
()));
collect
.
get
(
0
).
setTaskStatusLabel
(
params
.
get
(
"taskStatusLabel"
).
toString
());
collect
.
get
(
0
).
setEndUserId
(
exeUserId
);
collect
.
get
(
0
).
setEndDate
(
new
Date
());
// String[] roleIds = model.getRoutePath().split("roleIds=");
// String[] userIds = roleIds[1].split("&userId");
// String url = roleIds[0]+"roleIds="+"55555"+"&userId"+ userIds[1];
// String tarUrl = url.replaceFirst("&executeUserIds=", "");
// tarUrl+"&executeUserIds="
// model.setRoutePath( roleIds[0]+"roleIds="+"55555"+"&userId"+userIds[1]);
//当流程完成时将所有待办状态统一修改为已完成
if
(
collect
.
get
(
0
).
getFlowStatusLabel
().
equals
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
()))
{
String
urlParams
=
""
;
try
{
urlParams
=
"&"
+
toQueryParams
(
params
.
get
(
"model"
));
}
catch
(
UnsupportedEncodingException
e
)
{
e
.
printStackTrace
();
}
List
<
Map
>
urlList
=
JsonUtils
.
getResourceList
(
urlInfo
);
for
(
Map
map
:
urlList
)
{
if
(
map
.
get
(
"type"
).
equals
(
collect
.
get
(
0
).
getTaskType
())
&&
map
.
get
(
"pageType"
).
equals
(
"look"
))
{
urlParams
=
map
.
get
(
"url"
).
toString
().
replace
(
"{roleIds}"
,
""
)
+
urlParams
+
"&nextExecuteUserIds="
;
break
;
}
}
collect
.
get
(
0
).
setRoutePath
(
urlParams
);
for
(
TaskV2Model
taskV2Model
:
collect
)
{
taskV2Model
.
setTaskStatusLabel
((
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
()));
taskV2Model
.
setTaskStatus
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
());
taskV2Model
.
setFlowStatusLabel
((
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
()));
taskV2Model
.
setFlowStatus
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
());
}
Systemctl
.
taskV2Client
.
batchUpdate
(
collect
);
}
else
{
collect
.
get
(
0
).
setRoutePath
(
collect
.
get
(
0
).
getRoutePath
().
replace
(
"roleIds="
,
"roleIds=55555&fq="
));
Systemctl
.
taskV2Client
.
update
(
collect
.
get
(
0
),
collect
.
get
(
0
).
getSequenceNbr
());
}
//修改model并返回 用于组装新待办
collect
.
get
(
0
).
setEndUserId
(
null
);
collect
.
get
(
0
).
setTaskStatus
(
null
);
collect
.
get
(
0
).
setEndDate
(
null
);
collect
.
get
(
0
).
setSequenceNbr
(
null
);
collect
.
get
(
0
).
setCreateDate
(
new
Date
());
collect
.
get
(
0
).
setStartDate
(
new
Date
());
return
collect
.
get
(
0
);
}
/**
* 待办编辑接口 【如果没有代办直接返回空,业务判断】 ---- 在用,误删
* 参数
* taskStatus
* taskStatusLabel 操作名称 1驳回 2通过 3重新提交
* flowStatusLabel 任务状态枚举code
* 流程实例id instanceId
* flowCode 任务id
**/
public
TaskV2Model
updateTaskModelNew
(
Map
<
String
,
Object
>
params
)
{
String
exeUserId
=
RequestContext
.
getExeUserId
();
List
<
TaskV2Model
>
result
=
Systemctl
.
taskV2Client
.
selectListByRelationId
(
params
.
get
(
"relationId"
).
toString
()).
getResult
();
// TaskV2Model model = result.stream().filter(e->e.getFlowCode().equals(params.get("flowCode").toString())).sorted((r1, r2) -> r2.getSequenceNbr().compareTo(r2.getSequenceNbr())) // 按时间降序排序
// .findFirst()
// .orElse(null);
List
<
TaskV2Model
>
collect
=
result
.
stream
().
sorted
((
r1
,
r2
)
->
r2
.
getSequenceNbr
().
compareTo
(
r1
.
getSequenceNbr
())).
collect
(
Collectors
.
toList
());
if
(
null
==
collect
||
collect
.
size
()
==
0
)
{
TaskV2Model
model
=
new
TaskV2Model
();
model
.
setFlowStatus
(
Integer
.
valueOf
(
params
.
get
(
"flowStatus"
).
toString
()));
model
.
setFlowStatusLabel
(
params
.
get
(
"flowStatusLabel"
).
toString
());
model
.
setTaskStatus
(
Integer
.
valueOf
(
params
.
get
(
"taskStatus"
).
toString
()));
model
.
setTaskStatusLabel
(
params
.
get
(
"taskStatusLabel"
).
toString
());
return
model
;
}
collect
.
get
(
0
).
setFlowStatus
(
Integer
.
valueOf
(
params
.
get
(
"flowStatus"
).
toString
()));
collect
.
get
(
0
).
setFlowStatusLabel
(
params
.
get
(
"flowStatusLabel"
).
toString
());
collect
.
get
(
0
).
setTaskStatus
(
Integer
.
valueOf
(
params
.
get
(
"taskStatus"
).
toString
()));
collect
.
get
(
0
).
setTaskStatusLabel
(
params
.
get
(
"taskStatusLabel"
).
toString
());
collect
.
get
(
0
).
setEndUserId
(
exeUserId
);
collect
.
get
(
0
).
setEndDate
(
new
Date
());
//当流程完成时将所有待办状态统一修改为已完成
if
(
collect
.
get
(
0
).
getFlowStatusLabel
().
equals
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
()))
{
String
urlParams
=
""
;
try
{
urlParams
=
"&"
+
toQueryParams
(
params
.
get
(
"model"
));
}
catch
(
UnsupportedEncodingException
e
)
{
e
.
printStackTrace
();
}
List
<
Map
>
urlList
=
JsonUtils
.
getResourceList
(
urlInfo
);
for
(
Map
map
:
urlList
)
{
if
(
map
.
get
(
"type"
).
equals
(
collect
.
get
(
0
).
getTaskType
())
&&
map
.
get
(
"pageType"
).
equals
(
"look"
))
{
urlParams
=
map
.
get
(
"url"
).
toString
().
replace
(
"{roleIds}"
,
""
)
+
urlParams
+
"&nextExecuteUserIds="
;
break
;
}
}
collect
.
get
(
0
).
setRoutePath
(
urlParams
);
for
(
TaskV2Model
taskV2Model
:
collect
)
{
taskV2Model
.
setTaskStatusLabel
((
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
()));
taskV2Model
.
setTaskStatus
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
());
taskV2Model
.
setFlowStatusLabel
((
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
()));
taskV2Model
.
setFlowStatus
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
());
}
Systemctl
.
taskV2Client
.
batchUpdate
(
collect
);
}
else
{
collect
.
get
(
0
).
setRoutePath
(
collect
.
get
(
0
).
getRoutePath
().
replace
(
"roleIds="
,
"roleIds=55555&fq="
));
Systemctl
.
taskV2Client
.
update
(
collect
.
get
(
0
),
collect
.
get
(
0
).
getSequenceNbr
());
}
collect
.
get
(
0
).
setEndUserId
(
null
);
collect
.
get
(
0
).
setTaskStatus
(
null
);
collect
.
get
(
0
).
setEndDate
(
null
);
collect
.
get
(
0
).
setSequenceNbr
(
null
);
collect
.
get
(
0
).
setCreateDate
(
new
Date
());
collect
.
get
(
0
).
setStartDate
(
new
Date
());
return
collect
.
get
(
0
);
}
/**
* 待办 撤回
*
* @param id 工作流实例id
* @param obj 自己的实体:taskType为BusinessTypeEnum code;nextExecuteUser
*/
public
void
rollbackTask
(
String
id
,
JSONObject
obj
)
{
List
<
TaskV2Model
>
result
=
Systemctl
.
taskV2Client
.
selectListByRelationId
(
id
).
getResult
();
List
<
TaskV2Model
>
list
=
result
.
stream
().
sorted
((
r1
,
r2
)
->
r2
.
getSequenceNbr
().
compareTo
(
r1
.
getSequenceNbr
())).
collect
(
Collectors
.
toList
());
TaskV2Model
model
=
list
.
get
(
0
);
Systemctl
.
taskV2Client
.
delete
(
String
.
valueOf
(
model
.
getSequenceNbr
()));
String
urlParams
=
""
;
urlParams
=
"&"
+
toQueryParams2
(
obj
);
List
<
Map
>
urlList
=
JsonUtils
.
getResourceList
(
urlInfo
);
if
(
list
.
size
()
>
1
)
{
TaskV2Model
lastTaskModel
=
list
.
get
(
1
);
lastTaskModel
.
setEndUserId
(
null
);
lastTaskModel
.
setEndDate
(
null
);
lastTaskModel
.
setTaskStatus
(
0
);
lastTaskModel
.
setTaskStatusLabel
(
"待处理"
);
lastTaskModel
.
setFlowCode
(
obj
.
get
(
"nextTaskId"
).
toString
());
if
(
obj
.
get
(
"flowStatus"
)
!=
null
)
{
lastTaskModel
.
setFlowStatus
(
Integer
.
valueOf
(
obj
.
get
(
"flowStatus"
).
toString
()));
}
if
(
obj
.
get
(
"flowStatusLabel"
)
!=
null
)
{
lastTaskModel
.
setFlowStatusLabel
(
obj
.
get
(
"flowStatusLabel"
).
toString
());
}
for
(
Map
map
:
urlList
)
{
if
(
map
.
get
(
"type"
).
equals
(
obj
.
get
(
"taskType"
))
&&
map
.
get
(
"pageType"
).
equals
(
obj
.
getOrDefault
(
"pageType"
,
"edit"
)))
{
lastTaskModel
.
setRoutePath
(
map
.
get
(
"url"
).
toString
().
replace
(
"{roleIds}"
,
obj
.
get
(
"nextExecuteUser"
).
toString
())
+
urlParams
);
break
;
}
}
Systemctl
.
taskV2Client
.
update
(
lastTaskModel
,
lastTaskModel
.
getSequenceNbr
());
}
else
if
(
list
.
size
()
==
1
)
{
model
.
setExecuteUserIds
(
model
.
getStartUserId
());
model
.
setTaskStatusLabel
(
"重新提交"
);
model
.
setTaskStatus
(
FlowStatusEnum
.
TO_SUBMITTED
.
getCode
());
model
.
setSequenceNbr
(
null
);
if
(
obj
.
get
(
"flowStatus"
)
!=
null
)
{
model
.
setFlowStatus
(
Integer
.
valueOf
(
obj
.
get
(
"flowStatus"
).
toString
()));
}
if
(
obj
.
get
(
"flowStatusLabel"
)
!=
null
)
{
model
.
setFlowStatusLabel
(
obj
.
get
(
"flowStatusLabel"
).
toString
());
}
for
(
Map
map
:
urlList
)
{
if
(
map
.
get
(
"type"
).
equals
(
obj
.
get
(
"taskType"
))
&&
map
.
get
(
"pageType"
).
equals
(
"edit"
))
{
model
.
setRoutePath
(
map
.
get
(
"url"
).
toString
().
replace
(
"{roleIds}"
,
obj
.
get
(
"nextExecuteUser"
).
toString
())
+
urlParams
);
break
;
}
}
Systemctl
.
taskV2Client
.
create
(
model
);
}
}
private
static
String
toQueryParams2
(
JSONObject
jsonObject
)
{
StringBuilder
sb
=
new
StringBuilder
();
Set
<
String
>
keys
=
jsonObject
.
keySet
();
keys
.
forEach
(
key
->{
Object
value
=
jsonObject
.
get
(
key
);
if
(
sb
.
length
()
>
0
)
{
sb
.
append
(
'&'
);
}
try
{
if
(
value
!=
null
&&
!
""
.
equals
(
value
)){
sb
.
append
(
URLEncoder
.
encode
(
key
,
"UTF-8"
))
.
append
(
'='
)
.
append
(
URLEncoder
.
encode
(
value
.
toString
(),
"UTF-8"
));
}
}
catch
(
UnsupportedEncodingException
e
)
{
e
.
printStackTrace
();
}
});
return
sb
.
toString
();
}
public
<
T
>
String
toQueryParams
(
T
obj
)
throws
UnsupportedEncodingException
{
StringBuilder
sb
=
new
StringBuilder
();
for
(
Class
<?>
clazz
=
obj
.
getClass
();
!
clazz
.
equals
(
Object
.
class
);
clazz
=
clazz
.
getSuperclass
())
{
Field
[]
fields
=
clazz
.
getDeclaredFields
();
for
(
Field
field
:
fields
)
{
if
(!
Modifier
.
isStatic
(
field
.
getModifiers
()))
{
field
.
setAccessible
(
true
);
try
{
Object
value
=
field
.
get
(
obj
);
if
(
value
!=
null
&&
!
""
.
equals
(
value
))
{
String
encodedValue
=
URLEncoder
.
encode
(
value
.
toString
(),
"UTF-8"
);
sb
.
append
(
field
.
getName
()).
append
(
'='
).
append
(
encodedValue
).
append
(
'&'
);
}
}
catch
(
IllegalAccessException
e
)
{
throw
new
RuntimeException
(
e
);
}
}
}
}
return
sb
.
length
()
>
0
?
sb
.
substring
(
0
,
sb
.
length
()
-
1
)
:
""
;
}
/**
* 根据流程状态name 获取流程状态code
*
* @param name 流程状态name
* @return 流程状态code
*/
public
Integer
getDictionaryCodeByName
(
String
name
)
{
List
<
DataDictionary
>
jggzzz
=
iDataDictionaryService
.
getByType
(
"JGGZZZ"
);
for
(
DataDictionary
item
:
jggzzz
)
{
if
(
item
.
getName
().
equals
(
name
))
{
return
Integer
.
parseInt
(
item
.
getCode
());
}
}
return
null
;
}
/**
* 根据工作流返回信息,组装业务需要的数据
*
* @param processTaskDTOS 工作流返回信息
* @return 组装后的信息
*/
public
List
<
WorkflowResultDto
>
buildWorkFlowInfo
(
List
<
ProcessTaskDTO
>
processTaskDTOS
)
{
List
<
WorkflowResultDto
>
workflowResultDtoList
=
new
ArrayList
<>();
processTaskDTOS
.
forEach
(
item
->
{
WorkflowResultDto
workflowResultDto
=
new
WorkflowResultDto
();
if
(!
ObjectUtils
.
isEmpty
(
item
.
getProcessInstance
()))
{
workflowResultDto
.
setInstanceId
(
item
.
getProcessInstance
().
getId
());
}
if
(!
ObjectUtils
.
isEmpty
(
item
.
getTask
()))
{
workflowResultDto
.
setTaskName
(
item
.
getTask
().
getName
());
}
if
(!
ObjectUtils
.
isEmpty
(
item
.
getCandidateGroups
()))
{
workflowResultDto
.
setExecutorRoleIds
(
String
.
join
(
","
,
item
.
getCandidateGroups
()));
}
if
(!
ObjectUtils
.
isEmpty
(
item
.
getStartUser
()))
{
workflowResultDto
.
setStartUserId
(
item
.
getStartUser
().
getUserId
());
workflowResultDto
.
setStartUserName
(
item
.
getStartUser
().
getRealName
());
}
if
(!
ObjectUtils
.
isEmpty
(
item
.
getExecutor
()))
{
workflowResultDto
.
setExecutorId
(
item
.
getExecutor
().
getUserId
());
workflowResultDto
.
setExecutorName
(
item
.
getExecutor
().
getRealName
());
}
if
(!
CollectionUtils
.
isEmpty
(
item
.
getNextTask
()))
{
ActTaskDTO
actTaskDTO
=
item
.
getNextTask
().
get
(
0
);
workflowResultDto
.
setNextTaskId
(
actTaskDTO
.
getId
());
workflowResultDto
.
setNextTaskCode
(
actTaskDTO
.
getKey
());
workflowResultDto
.
setNextTaskName
(
actTaskDTO
.
getName
());
List
<
String
>
nextGroups
=
item
.
getNextCandidateGroups
().
get
(
actTaskDTO
.
getId
());
String
join
=
String
.
join
(
","
,
nextGroups
);
workflowResultDto
.
setNextExecutorRoleIds
(
join
);
List
<
String
>
nextUserIds
=
item
.
getNextTaskExecutor
().
get
(
actTaskDTO
.
getId
()).
stream
().
map
(
AgencyUserModel:
:
getUserId
).
collect
(
Collectors
.
toList
());
String
nextUserIdsString
=
String
.
join
(
","
,
nextUserIds
);
workflowResultDto
.
setNextExecutorUserIds
(
nextUserIdsString
);
}
workflowResultDtoList
.
add
(
workflowResultDto
);
});
return
workflowResultDtoList
;
}
}
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/CmWorkflowServiceImpl.java
0 → 100644
View file @
196baf06
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
biz
.
service
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.yeejoin.amos.boot.module.jyjc.biz.config.LocalBadRequest
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.ICmWorkflowService
;
import
com.yeejoin.amos.component.feign.config.InnerInvokException
;
import
com.yeejoin.amos.component.feign.utils.FeignUtil
;
import
com.yeejoin.amos.feign.workflow.Workflow
;
import
com.yeejoin.amos.feign.workflow.model.ActWorkflowBatchDTO
;
import
com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO
;
import
com.yeejoin.amos.feign.workflow.model.TaskResultDTO
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* @author Administrator
*/
@Service
@Slf4j
public
class
CmWorkflowServiceImpl
implements
ICmWorkflowService
{
@Override
public
List
<
ProcessTaskDTO
>
startBatch
(
ActWorkflowBatchDTO
params
)
{
List
<
ProcessTaskDTO
>
processTasks
;
try
{
log
.
info
(
"开始请求工作流启动接口:/start/batch,请求参数:{}"
,
JSONObject
.
toJSONString
(
params
));
processTasks
=
Workflow
.
taskV2Client
.
startForBatch
(
params
).
getResult
();
}
catch
(
InnerInvokException
e
)
{
//拦截无审核人异常信息
String
devMessage
=
e
.
getDevMessage
();
devMessage
=
devMessage
.
contains
(
";"
)
?
devMessage
.
split
(
";"
)[
0
]
:
devMessage
;
log
.
error
(
devMessage
);
throw
new
LocalBadRequest
(
devMessage
);
}
catch
(
Exception
e
)
{
log
.
error
(
"调用工作流批量启动失败"
,
e
);
throw
new
RuntimeException
(
"调用工作流批量启动失败"
);
}
return
processTasks
;
}
@Override
public
ProcessTaskDTO
complete
(
String
taskId
,
TaskResultDTO
data
)
{
ProcessTaskDTO
processTaskDTO
;
try
{
log
.
info
(
"开始请求工作流完成任务接口:/complete/standard/{taskId},请求参数:{},{}"
,
taskId
,
JSONObject
.
toJSONString
(
data
));
processTaskDTO
=
Workflow
.
taskV2Client
.
completeByTaskFroStandard
(
taskId
,
data
).
getResult
();
}
catch
(
InnerInvokException
e
)
{
//拦截无审核人异常信息
String
devMessage
=
e
.
getDevMessage
();
devMessage
=
devMessage
.
contains
(
";"
)
?
devMessage
.
split
(
";"
)[
0
]
:
devMessage
;
log
.
error
(
devMessage
);
throw
new
LocalBadRequest
(
devMessage
);
}
catch
(
Exception
e
)
{
log
.
error
(
"调用工作流完成任务接口失败"
,
e
);
throw
new
RuntimeException
(
"调用工作流完成任务接口失败"
);
}
return
processTaskDTO
;
}
@Override
public
ProcessTaskDTO
rollBack
(
String
processInstanceId
)
{
log
.
info
(
"开始请求工作流撤回接口:/rollBack/standard/{processInstanceId},请求参数:{}"
,
processInstanceId
);
return
FeignUtil
.
remoteCall
(()
->
Workflow
.
taskV2Client
.
rollBackTask
(
processInstanceId
));
}
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/utils/JsonUtils.java
View file @
196baf06
...
...
@@ -6,8 +6,11 @@ import org.springframework.core.io.Resource;
import
java.io.IOException
;
import
java.nio.charset.StandardCharsets
;
import
java.util.List
;
import
java.util.Map
;
import
static
com
.
alibaba
.
fastjson
.
JSON
.
parseArray
;
public
class
JsonUtils
{
//将json文件转化为Map<list<Map<>>>
...
...
@@ -20,4 +23,18 @@ public class JsonUtils {
}
return
JSONObject
.
parseObject
(
json
,
Map
.
class
);
}
//将json文件转化为List<Map>
public
static
List
<
Map
>
getResourceList
(
Resource
resource
)
{
String
json
=
null
;
try
{
json
=
IOUtils
.
toString
(
resource
.
getInputStream
(),
String
.
valueOf
(
StandardCharsets
.
UTF_8
));
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
resource
+
"json文件转化失败"
);
}
List
<
Map
>
list
=
parseArray
(
json
,
Map
.
class
);
return
list
;
}
}
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