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
c7f6ab98
Commit
c7f6ab98
authored
Oct 20, 2021
by
tianbo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
隐患列表添加权限过滤
parent
1ff823de
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
305 additions
and
267 deletions
+305
-267
WorkflowExcuteServiceImpl.java
...ot/biz/common/service/impl/WorkflowExcuteServiceImpl.java
+246
-240
LatentDangerController.java
...entdanger/business/controller/LatentDangerController.java
+6
-0
LatentDangerListParam.java
...os/latentdanger/business/param/LatentDangerListParam.java
+2
-0
PageParam.java
...m/yeejoin/amos/latentdanger/business/param/PageParam.java
+14
-3
LatentDangerServiceImpl.java
...danger/business/service/impl/LatentDangerServiceImpl.java
+33
-24
LatentDangerMapper.xml
...anger/src/main/resources/db/mapper/LatentDangerMapper.xml
+4
-0
No files found.
amos-boot-biz-common/src/main/java/com/yeejoin/amos/boot/biz/common/service/impl/WorkflowExcuteServiceImpl.java
View file @
c7f6ab98
package
com
.
yeejoin
.
amos
.
boot
.
biz
.
common
.
service
.
impl
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Random
;
import
java.util.Set
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.google.common.collect.Sets
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
import
com.yeejoin.amos.boot.biz.common.enums.WorkFlowEnum
;
import
com.yeejoin.amos.boot.biz.common.service.IWorkflowExcuteService
;
import
com.yeejoin.amos.boot.biz.common.workflow.feign.WorkflowFeignService
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.typroject.tyboot.core.foundation.utils.ValidationUtil
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
import
com.yeejoin.amos.boot.biz.common.enums.WorkFlowEnum
;
import
com.yeejoin.amos.boot.biz.common.service.IWorkflowExcuteService
;
import
com.yeejoin.amos.boot.biz.common.workflow.feign.WorkflowFeignService
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Random
;
import
java.util.Set
;
@Service
public
class
WorkflowExcuteServiceImpl
implements
IWorkflowExcuteService
{
@Autowired
WorkflowFeignService
workflowFeignService
;
@Autowired
WorkflowFeignService
workflowFeignService
;
public
static
String
buildOrderNo
()
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
String
newDate
=
sdf
.
format
(
new
Date
());
String
result
=
""
;
Random
random
=
new
Random
();
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
result
+=
random
.
nextInt
(
10
);
}
return
newDate
+
result
;
}
@Transactional
@Override
public
String
startAndComplete
(
String
key
,
String
condition
)
throws
Exception
{
JSONObject
body
=
new
JSONObject
();
String
businessKey
=
buildOrderNo
();
body
.
put
(
WorkFlowEnum
.
BUSINESSKEY
.
getCode
(),
businessKey
);
body
.
put
(
WorkFlowEnum
.
processDefinitionKey
.
getCode
(),
key
);
JSONObject
jsonObject
=
workflowFeignService
.
startByVariable
(
body
);
if
(
jsonObject
==
null
||
jsonObject
.
getJSONObject
(
WorkFlowEnum
.
DATA
.
getCode
())
==
null
)
{
throw
new
RuntimeException
(
"启动流程失败"
);
}
if
(
jsonObject
!=
null
)
{
JSONObject
instance
=
jsonObject
.
getJSONObject
(
WorkFlowEnum
.
DATA
.
getCode
());
if
(!
excuteTask
(
instance
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()),
condition
))
{
throw
new
RuntimeException
(
"初始执行任务失败"
);
}
}
return
jsonObject
.
getJSONObject
(
WorkFlowEnum
.
DATA
.
getCode
()).
getString
(
WorkFlowEnum
.
ID
.
getCode
());
}
@Transactional
@Override
public
String
startAndComplete
(
String
key
,
String
condition
)
throws
Exception
{
JSONObject
body
=
new
JSONObject
();
String
businessKey
=
buildOrderNo
();
body
.
put
(
WorkFlowEnum
.
BUSINESSKEY
.
getCode
(),
businessKey
);
body
.
put
(
WorkFlowEnum
.
processDefinitionKey
.
getCode
(),
key
);
JSONObject
jsonObject
=
workflowFeignService
.
startByVariable
(
body
);
if
(
jsonObject
==
null
||
jsonObject
.
getJSONObject
(
WorkFlowEnum
.
DATA
.
getCode
())
==
null
)
{
throw
new
RuntimeException
(
"启动流程失败"
);
}
if
(
jsonObject
!=
null
)
{
JSONObject
instance
=
jsonObject
.
getJSONObject
(
WorkFlowEnum
.
DATA
.
getCode
());
if
(!
excuteTask
(
instance
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()),
condition
))
{
throw
new
RuntimeException
(
"初始执行任务失败"
);
}
}
return
jsonObject
.
getJSONObject
(
WorkFlowEnum
.
DATA
.
getCode
()).
getString
(
WorkFlowEnum
.
ID
.
getCode
());
}
@Override
public
boolean
checkTaskAuth
(
String
processInstanceId
,
ReginParams
userInfo
)
{
Map
<
String
,
Object
>
map
=
checkTaskAuthMap
(
processInstanceId
,
userInfo
);
return
Boolean
.
parseBoolean
(
map
.
get
(
WorkFlowEnum
.
CHECKFLAG
.
getCode
()).
toString
());
}
@Override
public
boolean
checkTaskAuth
(
String
processInstanceId
,
ReginParams
userInfo
)
{
Map
<
String
,
Object
>
map
=
checkTaskAuthMap
(
processInstanceId
,
userInfo
);
return
Boolean
.
parseBoolean
(
map
.
get
(
WorkFlowEnum
.
CHECKFLAG
.
getCode
()).
toString
());
}
@Override
public
Map
<
String
,
Object
>
checkTaskAuthMap
(
String
processInstanceId
,
ReginParams
userInfo
)
{
// 获取当前登录用户的所有角色
Set
<
String
>
roleNameSet
=
Sets
.
newHashSet
();
if
(!
ValidationUtil
.
isEmpty
(
userInfo
.
getUserModel
().
getOrgRoles
()))
{
userInfo
.
getUserModel
().
getOrgRoles
().
values
().
forEach
(
i
->
{
i
.
forEach
(
e
->
{
roleNameSet
.
add
(
e
.
getRoleName
());
});
});
}
String
currentLoginUserName
=
userInfo
.
getUserModel
().
getUserName
();
Map
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>();
map
.
put
(
WorkFlowEnum
.
CHECKFLAG
.
getCode
(),
false
);
JSONObject
teskObject
=
workflowFeignService
.
getTaskList
(
processInstanceId
);
if
(
ObjectUtils
.
isNotEmpty
(
teskObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
())))
{
JSONArray
taskDetailArray
=
teskObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
for
(
Object
obj
:
taskDetailArray
)
{
JSONObject
detail
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
obj
));
if
(
WorkFlowEnum
.
制定计划内容
.
getCode
().
equals
(
detail
.
getString
(
WorkFlowEnum
.
NAME
.
getCode
()))
||
WorkFlowEnum
.
现场确认
.
getCode
().
equals
(
detail
.
getString
(
WorkFlowEnum
.
NAME
.
getCode
())))
{
String
groupName
=
getFristFlowDetail
(
processInstanceId
);
if
(
StringUtils
.
isNotBlank
(
groupName
)
&&
roleNameSet
.
contains
(
groupName
))
{
map
.
put
(
WorkFlowEnum
.
TASKID
.
getCode
(),
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
map
.
put
(
WorkFlowEnum
.
CHECKFLAG
.
getCode
(),
true
);
map
.
put
(
WorkFlowEnum
.
NAME
.
getCode
(),
detail
.
getString
(
WorkFlowEnum
.
NAME
.
getCode
()));
return
map
;
}
}
JSONObject
taskGroupNameObject
=
workflowFeignService
.
getTaskGroupName
(
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
// 获取流程中原本设置的当前节点的执行权限
JSONArray
taskGroupNameDetail
=
taskGroupNameObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
// 如果拿不到当前任务的执行角色,再去获取当前任务有没有默认的执行人,如果都没有则返回校验失败
if
(
ObjectUtils
.
isEmpty
(
taskGroupNameDetail
))
{
JSONObject
taskAssignObject
=
workflowFeignService
.
getTaskAssign
(
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
String
assignUser
=
taskAssignObject
.
getJSONObject
(
WorkFlowEnum
.
DATA
.
getCode
())
.
getString
(
WorkFlowEnum
.
ASSIGN
.
getCode
());
if
(
StringUtils
.
isNotBlank
(
assignUser
))
{
// 如果当前登录人与当前任务的设定人不一定,则直接返回权限校验失败
if
(!
assignUser
.
contains
(
currentLoginUserName
))
{
return
map
;
}
map
.
put
(
WorkFlowEnum
.
TASKID
.
getCode
(),
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
map
.
put
(
WorkFlowEnum
.
CHECKFLAG
.
getCode
(),
true
);
map
.
put
(
WorkFlowEnum
.
NAME
.
getCode
(),
detail
.
getString
(
WorkFlowEnum
.
NAME
.
getCode
()));
map
.
put
(
WorkFlowEnum
.
ASSIGN
.
getCode
(),
assignUser
);
return
map
;
}
continue
;
}
String
defaultExecutionRoleProcess
=
taskGroupNameDetail
.
getJSONObject
(
0
)
.
getString
(
WorkFlowEnum
.
GROUPID
.
getCode
());
@Override
public
Map
<
String
,
Object
>
checkTaskAuthMap
(
String
processInstanceId
,
ReginParams
userInfo
)
{
// 获取当前登录用户的角色
// String currentLoginUserRole = userInfo.getRole().getRoleName();
Set
<
String
>
roleNameSet
=
Sets
.
newHashSet
();
userInfo
.
getUserModel
().
getOrgRoles
().
values
().
forEach
(
i
->
{
i
.
forEach
(
e
->
{
roleNameSet
.
add
(
e
.
getRoleName
());
});
});
String
currentLoginUserName
=
userInfo
.
getUserModel
().
getUserName
();
Map
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>();
map
.
put
(
WorkFlowEnum
.
CHECKFLAG
.
getCode
(),
false
);
JSONObject
teskObject
=
workflowFeignService
.
getTaskList
(
processInstanceId
);
if
(
ObjectUtils
.
isNotEmpty
(
teskObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
())))
{
JSONArray
taskDetailArray
=
teskObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
for
(
Object
obj
:
taskDetailArray
)
{
JSONObject
detail
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
obj
));
if
(
WorkFlowEnum
.
制定计划内容
.
getCode
().
equals
(
detail
.
getString
(
WorkFlowEnum
.
NAME
.
getCode
()))
||
WorkFlowEnum
.
现场确认
.
getCode
().
equals
(
detail
.
getString
(
WorkFlowEnum
.
NAME
.
getCode
())))
{
String
groupName
=
getFristFlowDetail
(
processInstanceId
);
if
(
StringUtils
.
isNotBlank
(
groupName
)
&&
roleNameSet
.
contains
(
groupName
))
{
map
.
put
(
WorkFlowEnum
.
TASKID
.
getCode
(),
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
map
.
put
(
WorkFlowEnum
.
CHECKFLAG
.
getCode
(),
true
);
map
.
put
(
WorkFlowEnum
.
NAME
.
getCode
(),
detail
.
getString
(
WorkFlowEnum
.
NAME
.
getCode
()));
return
map
;
}
}
JSONObject
taskGroupNameObject
=
workflowFeignService
.
getTaskGroupName
(
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
// 获取流程中原本设置的当前节点的执行权限
JSONArray
taskGroupNameDetail
=
taskGroupNameObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
// 如果拿不到当前任务的执行角色,再去获取当前任务有没有默认的执行人,如果都没有则返回校验失败
if
(
ObjectUtils
.
isEmpty
(
taskGroupNameDetail
))
{
JSONObject
taskAssignObject
=
workflowFeignService
.
getTaskAssign
(
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
String
assignUser
=
taskAssignObject
.
getJSONObject
(
WorkFlowEnum
.
DATA
.
getCode
())
.
getString
(
WorkFlowEnum
.
ASSIGN
.
getCode
());
if
(
StringUtils
.
isNotBlank
(
assignUser
))
{
// 如果当前登录人与当前任务的设定人不一定,则直接返回权限校验失败
if
(!
assignUser
.
contains
(
currentLoginUserName
))
{
return
map
;
}
map
.
put
(
WorkFlowEnum
.
TASKID
.
getCode
(),
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
map
.
put
(
WorkFlowEnum
.
CHECKFLAG
.
getCode
(),
true
);
map
.
put
(
WorkFlowEnum
.
NAME
.
getCode
(),
detail
.
getString
(
WorkFlowEnum
.
NAME
.
getCode
()));
map
.
put
(
WorkFlowEnum
.
ASSIGN
.
getCode
(),
assignUser
);
return
map
;
}
continue
;
}
String
defaultExecutionRoleProcess
=
taskGroupNameDetail
.
getJSONObject
(
0
)
.
getString
(
WorkFlowEnum
.
GROUPID
.
getCode
());
if
(
StringUtils
.
isBlank
(
defaultExecutionRoleProcess
))
{
continue
;
}
// 判断当前登录人的角色是不是与流程中设置的当前任务节点权限一致,一致则执行,不一致则退出
if
(!
roleNameSet
.
contains
(
defaultExecutionRoleProcess
))
{
continue
;
}
map
.
put
(
WorkFlowEnum
.
TASKID
.
getCode
(),
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
map
.
put
(
WorkFlowEnum
.
CHECKFLAG
.
getCode
(),
true
);
map
.
put
(
WorkFlowEnum
.
NAME
.
getCode
(),
detail
.
getString
(
WorkFlowEnum
.
NAME
.
getCode
()));
map
.
put
(
WorkFlowEnum
.
GROUPNAME
.
getCode
(),
defaultExecutionRoleProcess
);
}
}
return
map
;
}
if
(
StringUtils
.
isBlank
(
defaultExecutionRoleProcess
))
{
continue
;
}
// 判断当前登录人的角色是不是与流程中设置的当前任务节点权限一致,一致则执行,不一致则退出
if
(!
roleNameSet
.
contains
(
defaultExecutionRoleProcess
))
{
continue
;
}
map
.
put
(
WorkFlowEnum
.
TASKID
.
getCode
(),
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
map
.
put
(
WorkFlowEnum
.
CHECKFLAG
.
getCode
(),
true
);
map
.
put
(
WorkFlowEnum
.
NAME
.
getCode
(),
detail
.
getString
(
WorkFlowEnum
.
NAME
.
getCode
()));
map
.
put
(
WorkFlowEnum
.
GROUPNAME
.
getCode
(),
defaultExecutionRoleProcess
);
}
}
return
map
;
}
@Override
public
boolean
excuteTask
(
String
procressId
,
String
condition
)
throws
Exception
{
HashMap
<
String
,
Object
>
conditionMap
=
new
HashMap
<
String
,
Object
>();
conditionMap
.
put
(
WorkFlowEnum
.
CONDITION
.
getCode
(),
condition
);
JSONObject
teskObject
=
workflowFeignService
.
getTaskList
(
procressId
);
if
(
ObjectUtils
.
isNotEmpty
(
teskObject
))
{
JSONArray
taskDetailArray
=
teskObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
for
(
Object
obj
:
taskDetailArray
)
{
JSONObject
detail
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
obj
));
workflowFeignService
.
pickupAndCompleteTask
(
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()),
conditionMap
);
}
}
return
true
;
}
@Override
public
boolean
excuteTask
(
String
procressId
,
String
condition
)
throws
Exception
{
HashMap
<
String
,
Object
>
conditionMap
=
new
HashMap
<
String
,
Object
>();
conditionMap
.
put
(
WorkFlowEnum
.
CONDITION
.
getCode
(),
condition
);
JSONObject
teskObject
=
workflowFeignService
.
getTaskList
(
procressId
);
if
(
ObjectUtils
.
isNotEmpty
(
teskObject
))
{
JSONArray
taskDetailArray
=
teskObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
for
(
Object
obj
:
taskDetailArray
)
{
JSONObject
detail
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
obj
));
workflowFeignService
.
pickupAndCompleteTask
(
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()),
conditionMap
);
}
}
return
true
;
}
@Override
public
Object
setTaskAssign
(
String
processInstanceId
,
String
userId
)
{
JSONObject
teskObject
=
workflowFeignService
.
getTaskList
(
processInstanceId
);
if
(
ObjectUtils
.
isEmpty
(
teskObject
))
{
throw
new
RuntimeException
(
"设置任务执行人失败, 任务不存在,请检查processInstanceId"
+
processInstanceId
+
"是否正确"
);
}
JSONArray
taskDetailArray
=
teskObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
for
(
Object
obj
:
taskDetailArray
)
{
JSONObject
detail
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
obj
));
JSONObject
taskGroupNameObject
=
workflowFeignService
.
getTaskGroupName
(
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
try
{
if
(
taskGroupNameObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
())
==
null
||
taskGroupNameObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
()).
size
()
<
1
)
{
workflowFeignService
.
setTaskUser
(
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()),
userId
);
}
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"设置任务执行人失败"
);
}
}
return
true
;
}
@Override
public
Object
setTaskAssign
(
String
processInstanceId
,
String
userId
)
{
JSONObject
teskObject
=
workflowFeignService
.
getTaskList
(
processInstanceId
);
if
(
ObjectUtils
.
isEmpty
(
teskObject
))
{
throw
new
RuntimeException
(
"设置任务执行人失败, 任务不存在,请检查processInstanceId"
+
processInstanceId
+
"是否正确"
);
}
JSONArray
taskDetailArray
=
teskObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
for
(
Object
obj
:
taskDetailArray
)
{
JSONObject
detail
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
obj
));
JSONObject
taskGroupNameObject
=
workflowFeignService
.
getTaskGroupName
(
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
try
{
if
(
taskGroupNameObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
())
==
null
||
taskGroupNameObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
()).
size
()
<
1
)
{
workflowFeignService
.
setTaskUser
(
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()),
userId
);
}
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"设置任务执行人失败"
);
}
}
return
true
;
}
@Override
public
boolean
CompleteTask
(
String
processInstanceId
,
String
condition
,
ReginParams
userInfo
)
{
Map
<
String
,
Object
>
map
=
checkTaskAuthMap
(
processInstanceId
,
userInfo
);
if
(
Boolean
.
parseBoolean
(
map
.
get
(
WorkFlowEnum
.
CHECKFLAG
.
getCode
()).
toString
()))
{
HashMap
<
String
,
Object
>
conditionMap
=
new
HashMap
<
String
,
Object
>();
conditionMap
.
put
(
WorkFlowEnum
.
CONDITION
.
getCode
(),
condition
);
try
{
workflowFeignService
.
pickupAndCompleteTask
(
map
.
get
(
WorkFlowEnum
.
TASKID
.
getCode
()).
toString
(),
conditionMap
);
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"完成任务失败"
);
}
}
else
{
throw
new
RuntimeException
(
"没有执行权限"
);
}
return
true
;
}
@Override
public
boolean
CompleteTask
(
String
processInstanceId
,
String
condition
,
ReginParams
userInfo
)
{
Map
<
String
,
Object
>
map
=
checkTaskAuthMap
(
processInstanceId
,
userInfo
);
if
(
Boolean
.
parseBoolean
(
map
.
get
(
WorkFlowEnum
.
CHECKFLAG
.
getCode
()).
toString
()))
{
HashMap
<
String
,
Object
>
conditionMap
=
new
HashMap
<
String
,
Object
>();
conditionMap
.
put
(
WorkFlowEnum
.
CONDITION
.
getCode
(),
condition
);
try
{
workflowFeignService
.
pickupAndCompleteTask
(
map
.
get
(
WorkFlowEnum
.
TASKID
.
getCode
()).
toString
(),
conditionMap
);
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"完成任务失败"
);
}
}
else
{
throw
new
RuntimeException
(
"没有执行权限"
);
}
return
true
;
}
public
static
String
buildOrderNo
()
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
String
newDate
=
sdf
.
format
(
new
Date
());
String
result
=
""
;
Random
random
=
new
Random
();
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
result
+=
random
.
nextInt
(
10
);
}
return
newDate
+
result
;
}
/**
* 描述: 获取在流程启动时,直接完成的特定任务的执行角色信息。
* 作用:用来判断当前登录用户在任务回退到启动并完成的哪一步任务的执行权限,以及获取当前登录用户所属角色能够处理的当前任务的列表数据
*
* @param processInstanceId
* @return
*/
public
String
getFristFlowDetail
(
String
processInstanceId
)
{
try
{
/**
* 描述: 获取在流程启动时,直接完成的特定任务的执行角色信息。
* 作用:用来判断当前登录用户在任务回退到启动并完成的哪一步任务的执行权限,以及获取当前登录用户所属角色能够处理的当前任务的列表数据
*
* @param processInstanceId
* @return
*/
public
String
getFristFlowDetail
(
String
processInstanceId
)
{
try
{
JSONObject
historyTaskJsonObject
=
workflowFeignService
.
getHistoricTaskForProcessInstanceId
(
processInstanceId
);
if
(
ObjectUtils
.
isEmpty
(
historyTaskJsonObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
())))
{
return
null
;
}
JSONObject
historyTaskObject
=
historyTaskJsonObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
())
.
getJSONObject
(
0
);
JSONObject
detail
=
workflowFeignService
.
getHistoricIdentityLinksForTask
(
historyTaskObject
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
JSONArray
resultArray
=
detail
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
if
(
ObjectUtils
.
isNotEmpty
(
resultArray
))
{
for
(
int
i
=
0
;
i
<
resultArray
.
size
();
i
++)
{
JSONObject
result
=
resultArray
.
getJSONObject
(
i
);
if
(
result
.
getBooleanValue
(
WorkFlowEnum
.
GROUP
.
getCode
()))
{
return
result
.
getString
(
WorkFlowEnum
.
GROUPID
.
getCode
());
}
}
}
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
JSONObject
historyTaskJsonObject
=
workflowFeignService
.
getHistoricTaskForProcessInstanceId
(
processInstanceId
);
if
(
ObjectUtils
.
isEmpty
(
historyTaskJsonObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
())))
{
return
null
;
}
JSONObject
historyTaskObject
=
historyTaskJsonObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
())
.
getJSONObject
(
0
);
JSONObject
detail
=
workflowFeignService
.
getHistoricIdentityLinksForTask
(
historyTaskObject
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
JSONArray
resultArray
=
detail
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
if
(
ObjectUtils
.
isNotEmpty
(
resultArray
))
{
for
(
int
i
=
0
;
i
<
resultArray
.
size
();
i
++)
{
JSONObject
result
=
resultArray
.
getJSONObject
(
i
);
if
(
result
.
getBooleanValue
(
WorkFlowEnum
.
GROUP
.
getCode
()))
{
return
result
.
getString
(
WorkFlowEnum
.
GROUPID
.
getCode
());
}
}
}
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
/**
* 获取当前登录用户所能执行的任务信息列表
* @param key
* @param userInfo
* @return List<map<String,String>> eg: [{ "processInstanceId": "110d3af9-1f5a-11ec-a26e-b07b25133c48"}]
* @throws Exception
*/
public
Object
getCurrentUserAllTaskList
(
String
key
,
ReginParams
userInfo
)
throws
Exception
{
Set
<
String
>
roleNameSet
=
Sets
.
newHashSet
();
userInfo
.
getUserModel
().
getOrgRoles
().
values
().
forEach
(
i
->
{
i
.
forEach
(
e
->
{
roleNameSet
.
add
(
e
.
getRoleName
());
});
});
// String currentLoginUserRole = userInfo.getRole().getRoleName();
JSONObject
CurrentUserAllTaskResult
=
null
;
try
{
//获取该登录用户已经分配到他名下和他对应的角色权限所能执行的任务组
CurrentUserAllTaskResult
=
workflowFeignService
.
getCurrentUserAllTaskList
(
key
);
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"获取当前角色所能执行的任务失败"
);
}
JSONArray
allTaskResultList
=
CurrentUserAllTaskResult
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
//获取制定计划节点任务的所有可执行任务
JSONObject
SpecifyTask
=
workflowFeignService
.
getTaskListForTaskName
(
WorkFlowEnum
.
制定计划内容
.
getCode
(),
key
);
JSONArray
SpecifyTaskArray
=
SpecifyTask
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
//判断该执行任务的历史执行节点的角色是否与当前登录用户的角色一致,如果一致就添加到根据用户角色ID和userID所属的任务列表中
SpecifyTaskArray
.
stream
().
forEach
(
i
->
{
JSONObject
json
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
i
));
String
groupName
=
getFristFlowDetail
(
json
.
getString
(
WorkFlowEnum
.
PROCESSINSTANCEID
.
getCode
()));
if
(
StringUtils
.
isNotBlank
(
groupName
)
&&
roleNameSet
.
contains
(
groupName
))
{
allTaskResultList
.
add
(
i
);
}
});
return
allTaskResultList
;
}
/**
* 获取当前登录用户所能执行的任务信息列表
*
* @param key
* @param userInfo
* @return List<map < String, String>> eg: [{ "processInstanceId": "110d3af9-1f5a-11ec-a26e-b07b25133c48"}]
* @throws Exception
*/
@Override
public
Object
getCurrentUserAllTaskList
(
String
key
,
ReginParams
userInfo
)
throws
Exception
{
// 获取当前登录人的所有角色名
Set
<
String
>
roleNameSet
=
Sets
.
newHashSet
();
if
(!
ValidationUtil
.
isEmpty
(
userInfo
.
getUserModel
().
getOrgRoles
()))
{
userInfo
.
getUserModel
().
getOrgRoles
().
values
().
forEach
(
i
->
{
i
.
forEach
(
e
->
{
roleNameSet
.
add
(
e
.
getRoleName
());
});
});
}
JSONObject
CurrentUserAllTaskResult
=
null
;
try
{
//获取该登录用户已经分配到他名下和他对应的角色权限所能执行的任务组
CurrentUserAllTaskResult
=
workflowFeignService
.
getCurrentUserAllTaskList
(
key
);
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"获取当前角色所能执行的任务失败"
);
}
JSONArray
allTaskResultList
=
CurrentUserAllTaskResult
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
//获取制定计划节点任务的所有可执行任务
JSONObject
SpecifyTask
=
workflowFeignService
.
getTaskListForTaskName
(
WorkFlowEnum
.
制定计划内容
.
getCode
(),
key
);
JSONArray
SpecifyTaskArray
=
SpecifyTask
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
//判断该执行任务的历史执行节点的角色是否与当前登录用户的角色一致,如果一致就添加到根据用户角色ID和userID所属的任务列表中
SpecifyTaskArray
.
stream
().
forEach
(
i
->
{
JSONObject
json
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
i
));
String
groupName
=
getFristFlowDetail
(
json
.
getString
(
WorkFlowEnum
.
PROCESSINSTANCEID
.
getCode
()));
if
(
StringUtils
.
isNotBlank
(
groupName
)
&&
roleNameSet
.
contains
(
groupName
))
{
allTaskResultList
.
add
(
i
);
}
});
return
allTaskResultList
;
}
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-latentdanger-biz/src/main/java/com/yeejoin/amos/latentdanger/business/controller/LatentDangerController.java
View file @
c7f6ab98
...
...
@@ -240,6 +240,8 @@ public class LatentDangerController extends BaseController {
@PostMapping
(
value
=
"/page/list"
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
public
ResponseModel
listDanger
(
@ApiParam
(
value
=
"查询条件"
,
required
=
true
)
@RequestBody
PageParam
pageParam
)
throws
Exception
{
ReginParams
reginParams
=
getSelectedOrgInfo
();
pageParam
.
put
(
"orgCode"
,
reginParams
.
getCompany
().
getOrgCode
());
IPage
<
LatentDanger
>
result
=
iLatentDangerService
.
pageListDanger
(
pageParam
);
return
ResponseHelper
.
buildResponse
(
result
);
}
...
...
@@ -294,6 +296,8 @@ public class LatentDangerController extends BaseController {
@PostMapping
(
value
=
"/list/all"
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
public
ResponseModel
<
List
<
LatentDanger
>>
listAllDanger
(
@RequestBody
LatentDangerListParam
searchParam
)
{
ReginParams
reginParams
=
getSelectedOrgInfo
();
searchParam
.
setOrgCode
(
reginParams
.
getCompany
().
getOrgCode
());
return
ResponseHelper
.
buildResponse
(
iLatentDangerService
.
listAllDanger
(
searchParam
));
}
...
...
@@ -336,6 +340,8 @@ public class LatentDangerController extends BaseController {
@PostMapping
(
value
=
"/supervision/page/reviewList"
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
public
ResponseModel
reviewListDanger
(
@ApiParam
(
value
=
"查询条件"
,
required
=
true
)
@RequestBody
PageParam
pageParam
)
throws
Exception
{
ReginParams
reginParams
=
getSelectedOrgInfo
();
pageParam
.
put
(
"orgCode"
,
reginParams
.
getCompany
().
getOrgCode
());
IPage
<
LatentDanger
>
result
=
iLatentDangerService
.
reviewListDanger
(
pageParam
);
return
ResponseHelper
.
buildResponse
(
result
);
}
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-latentdanger-biz/src/main/java/com/yeejoin/amos/latentdanger/business/param/LatentDangerListParam.java
View file @
c7f6ab98
...
...
@@ -39,4 +39,6 @@ public class LatentDangerListParam extends CommonPageable {
private
String
userId
;
private
String
dangerIds
;
private
String
orgCode
;
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-latentdanger-biz/src/main/java/com/yeejoin/amos/latentdanger/business/param/PageParam.java
View file @
c7f6ab98
...
...
@@ -106,11 +106,22 @@ public class PageParam<K, V> extends HashMap<K, V> implements Pageable {
return
false
;
}
public
int
getParamCurrent
()
{
if
(
!
ValidationUtil
.
isEmpty
(
this
.
get
(
"current"
)))
{
public
int
getParam
Page
Current
()
{
if
(
ValidationUtil
.
isEmpty
(
this
.
get
(
"current"
)))
{
return
current
;
}
if
(
this
.
get
(
"current"
)
instanceof
String
&&
this
.
get
(
"size"
)
instanceof
String
)
{
if
(
this
.
get
(
"current"
)
instanceof
String
)
{
return
Integer
.
parseInt
((
String
)
this
.
get
(
"current"
));
}
else
{
return
(
Integer
)(
this
.
get
(
"current"
));
}
}
public
int
getParamPageSize
()
{
if
(
ValidationUtil
.
isEmpty
(
this
.
get
(
"size"
)))
{
return
size
;
}
if
(
this
.
get
(
"size"
)
instanceof
String
)
{
return
Integer
.
parseInt
((
String
)
this
.
get
(
"current"
));
}
else
{
return
(
Integer
)(
this
.
get
(
"current"
));
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-latentdanger-biz/src/main/java/com/yeejoin/amos/latentdanger/business/service/impl/LatentDangerServiceImpl.java
View file @
c7f6ab98
...
...
@@ -49,7 +49,20 @@ import com.yeejoin.amos.latentdanger.business.vo.DangerTimeAxisVo;
import
com.yeejoin.amos.latentdanger.business.vo.LatentDangerDetailRiskVo
;
import
com.yeejoin.amos.latentdanger.business.vo.LatentDangerDetailVo
;
import
com.yeejoin.amos.latentdanger.business.vo.LatentDangerListVo
;
import
com.yeejoin.amos.latentdanger.common.enums.*
;
import
com.yeejoin.amos.latentdanger.common.enums.DangerHandleStateEnum
;
import
com.yeejoin.amos.latentdanger.common.enums.DictTypeEnum
;
import
com.yeejoin.amos.latentdanger.common.enums.ExecuteStateEnum
;
import
com.yeejoin.amos.latentdanger.common.enums.ExecuteTypeEnum
;
import
com.yeejoin.amos.latentdanger.common.enums.LatentDangerBizTypeEnum
;
import
com.yeejoin.amos.latentdanger.common.enums.LatentDangerExecuteTypeEnum
;
import
com.yeejoin.amos.latentdanger.common.enums.LatentDangerLevelEnum
;
import
com.yeejoin.amos.latentdanger.common.enums.LatentDangerOvertimeStateEnum
;
import
com.yeejoin.amos.latentdanger.common.enums.LatentDangerProcessStateEnum
;
import
com.yeejoin.amos.latentdanger.common.enums.LatentDangerReformTypeEnum
;
import
com.yeejoin.amos.latentdanger.common.enums.LatentDangerState
;
import
com.yeejoin.amos.latentdanger.common.enums.LatentDangerStateEnum
;
import
com.yeejoin.amos.latentdanger.common.enums.LatentDangerTypeEnum
;
import
com.yeejoin.amos.latentdanger.common.enums.OwerEnum
;
import
com.yeejoin.amos.latentdanger.common.remote.RemoteSpcService
;
import
com.yeejoin.amos.latentdanger.common.remote.RemoteWebSocketServer
;
import
com.yeejoin.amos.latentdanger.common.remote.RemoteWorkFlowService
;
...
...
@@ -81,9 +94,17 @@ import org.typroject.tyboot.core.rdbms.service.BaseService;
import
org.typroject.tyboot.core.restful.utils.ResponseHelper
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
import
java.util.*
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
import
static
com
.
yeejoin
.
amos
.
latentdanger
.
business
.
util
.
RandomUtil
.
buildOrderNo
;
import
static
org
.
typroject
.
tyboot
.
core
.
foundation
.
context
.
RequestContext
.
getProduct
;
...
...
@@ -107,6 +128,8 @@ public class LatentDangerServiceImpl extends BaseService<LatentDangerBo, LatentD
@Autowired
SupervisionFeignClient
supervisionFeignClient
;
@Autowired
JcsFeignClient
jcsFeignClient
;
@Autowired
private
RemoteWorkFlowService
remoteWorkFlowService
;
@Autowired
private
RemoteSecurityService
remoteSecurityService
;
...
...
@@ -120,7 +143,6 @@ public class LatentDangerServiceImpl extends BaseService<LatentDangerBo, LatentD
private
RemoteSpcService
remoteSpcService
;
@Autowired
private
AsyncTask
asyncTask
;
// @Autowired
// private Business business;
@Autowired
...
...
@@ -145,14 +167,10 @@ public class LatentDangerServiceImpl extends BaseService<LatentDangerBo, LatentD
private
WorkflowExcuteServiceImpl
workflowExecuteService
;
@Autowired
private
WorkflowFeignService
workflowFeignService
;
// 有启动后执行现场确认的角色名称
@Value
(
"${onSite.confirm.roleName}"
)
private
String
onSiteConfirmRole
;
@Autowired
JcsFeignClient
jcsFeignClient
;
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
CommonResponse
saveNormal
(
LatentDangerDto
latentDangerDto
,
String
userId
,
String
userRealName
,
...
...
@@ -1813,18 +1831,17 @@ public class LatentDangerServiceImpl extends BaseService<LatentDangerBo, LatentD
if
(!
ValidationUtil
.
isEmpty
(
dangerIdList
))
{
pageParam
.
put
(
"dangerIds"
,
dangerIdList
);
}
Page
page
=
new
Page
();
initPage
(
pageParam
,
page
);
if
(
ValidationUtil
.
isEmpty
(
pageParam
.
get
(
"order"
)))
{
pageParam
.
put
(
"order"
,
"1"
);
}
Page
page
=
new
Page
(
pageParam
.
getParamPageCurrent
(),
pageParam
.
getParamPageSize
());
IPage
<
LatentDanger
>
iPage
=
this
.
baseMapper
.
selectPageByParam
(
page
,
(
Map
<
String
,
Object
>)
pageParam
);
if
(
iPage
.
getCurrent
()
!=
pageParam
.
getParamCurrent
())
{
if
(
iPage
.
getCurrent
()
!=
pageParam
.
getParam
Page
Current
())
{
iPage
.
setRecords
(
Lists
.
newArrayList
());
iPage
.
setTotal
(
0
);
iPage
.
setCurrent
(
pageParam
.
getParamCurrent
());
iPage
.
setCurrent
(
pageParam
.
getParam
Page
Current
());
return
iPage
;
}
Map
<
String
,
Object
>
buildingAbsolutePositionMap
=
new
HashMap
<>();
...
...
@@ -1865,18 +1882,6 @@ public class LatentDangerServiceImpl extends BaseService<LatentDangerBo, LatentD
return
iPage
;
}
public
void
initPage
(
PageParam
pageParam
,
Page
page
)
{
if
(
pageParam
.
get
(
"current"
)
instanceof
String
&&
pageParam
.
get
(
"size"
)
instanceof
String
)
{
int
current
=
Integer
.
valueOf
((
String
)
pageParam
.
get
(
"current"
));
int
size
=
Integer
.
valueOf
((
String
)
pageParam
.
get
(
"size"
));
page
.
setCurrent
(
current
);
page
.
setSize
(
size
);
}
else
{
page
.
setCurrent
((
Integer
)(
pageParam
.
get
(
"current"
)));
page
.
setSize
((
Integer
)(
pageParam
.
get
(
"size"
)));
}
}
private
List
<
Map
<
String
,
Object
>>
getAllNodes
(
List
<
Map
<
String
,
Object
>>
buildingTree
)
{
List
<
Map
<
String
,
Object
>>
res
=
new
LinkedList
<>();
if
(
buildingTree
!=
null
&&
!
buildingTree
.
isEmpty
())
{
...
...
@@ -1983,6 +1988,10 @@ public class LatentDangerServiceImpl extends BaseService<LatentDangerBo, LatentD
if
(!
ValidationUtil
.
isEmpty
(
searchParam
.
getDangerIds
()))
{
lambdaQueryWrapper
.
in
(
LatentDanger:
:
getId
,
Lists
.
newArrayList
(
searchParam
.
getDangerIds
().
split
(
","
)));
}
lambdaQueryWrapper
.
and
(
o
->
o
.
likeRight
(
LatentDanger:
:
getOrgCode
,
searchParam
.
getOrgCode
()
+
"*"
)
.
or
().
likeRight
(
LatentDanger:
:
getOrgCode
,
searchParam
.
getOrgCode
()
+
"-"
)
.
or
().
eq
(
LatentDanger:
:
getOrgCode
,
searchParam
.
getOrgCode
()));
List
<
LatentDanger
>
latentDangers
=
this
.
baseMapper
.
selectList
(
lambdaQueryWrapper
);
return
latentDangers
;
...
...
amos-boot-system-latentdanger/src/main/resources/db/mapper/LatentDangerMapper.xml
View file @
c7f6ab98
...
...
@@ -963,6 +963,10 @@
<where>
deleted = 0
<foreach
collection=
"paramMap"
index=
"key"
item=
"value"
>
<if
test=
"key == 'orgCode' and value != null and value != ''"
>
and (a.org_code like concat(#{value}, "*%") or a.org_code like concat(#{value}, "-%") or
a.org_code = #{value})
</if>
<if
test=
"key == 'bizType' and value != null and value != ''"
>
and a.biz_type = #{value}
</if>
...
...
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