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
3a3e8b2a
Commit
3a3e8b2a
authored
Mar 13, 2024
by
tianbo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
登记类修改并发问题-维保备案提交按钮处理
parent
3ba29968
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
40 additions
and
19 deletions
+40
-19
JgMaintenanceContractServiceImpl.java
...jg/biz/service/impl/JgMaintenanceContractServiceImpl.java
+40
-19
No files found.
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/service/impl/JgMaintenanceContractServiceImpl.java
View file @
3a3e8b2a
...
...
@@ -448,26 +448,47 @@ public class JgMaintenanceContractServiceImpl extends BaseService<JgMaintenanceC
BeanUtil
.
copyProperties
(
contract
,
bean
);
createTaskModel
(
bean
,
taskName
,
"1"
,
nextUserIds
);
}
else
{
// 有InstanceId,执行一步
ProcessTaskDTO
processTaskDTO
=
this
.
submit
(
"0"
,
contract
);
String
nextTaskId
=
processTaskDTO
.
getNextTask
().
get
(
0
).
getId
();
String
taskName
=
processTaskDTO
.
getNextTask
().
get
(
0
).
getName
();
this
.
buildRoleList
(
Collections
.
singletonList
(
processTaskDTO
),
roleListNext
,
roleListAll
);
List
<
WorkflowResultDto
>
workflowResultDtos
=
commonService
.
buildWorkFlowInfo
(
Collections
.
singletonList
(
processTaskDTO
));
String
nextUserIds
=
workflowResultDtos
.
get
(
0
).
getNextExecutorUserIds
();
// 查询下节点任务
if
(!
ObjectUtils
.
isEmpty
(
contract
.
getInstanceStatus
()))
{
contract
.
setInstanceStatus
(
contract
.
getInstanceStatus
()
+
","
+
String
.
join
(
""
,
roleListNext
));
}
else
{
contract
.
setInstanceStatus
(
String
.
join
(
","
,
roleListAll
));
String
lockKey
=
CommonServiceImpl
.
buildJgExecuteLockKey
(
contract
.
getInstanceId
());
RLock
lock
=
redissonClient
.
getLock
(
lockKey
);
try
{
boolean
isLocked
=
lock
.
tryLock
(
0
,
180
,
TimeUnit
.
SECONDS
);
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
if
(!
isLocked
){
throw
new
BadRequest
(
"当前流程已经被执行!"
);
}
// 流程执行时,状态及权限校验
commonService
.
checkForExecuteFlow
(
String
.
valueOf
(
map
.
get
(
"nextTaskId"
)),
contract
.
getInstanceId
());
// 有InstanceId,执行一步
ProcessTaskDTO
processTaskDTO
=
this
.
submit
(
"0"
,
contract
);
String
nextTaskId
=
processTaskDTO
.
getNextTask
().
get
(
0
).
getId
();
String
taskName
=
processTaskDTO
.
getNextTask
().
get
(
0
).
getName
();
this
.
buildRoleList
(
Collections
.
singletonList
(
processTaskDTO
),
roleListNext
,
roleListAll
);
List
<
WorkflowResultDto
>
workflowResultDtos
=
commonService
.
buildWorkFlowInfo
(
Collections
.
singletonList
(
processTaskDTO
));
String
nextUserIds
=
workflowResultDtos
.
get
(
0
).
getNextExecutorUserIds
();
// 查询下节点任务
if
(!
ObjectUtils
.
isEmpty
(
contract
.
getInstanceStatus
()))
{
contract
.
setInstanceStatus
(
contract
.
getInstanceStatus
()
+
","
+
String
.
join
(
""
,
roleListNext
));
}
else
{
contract
.
setInstanceStatus
(
String
.
join
(
","
,
roleListAll
));
}
contract
.
setPromoter
(
RequestContext
.
getExeUserId
());
contract
.
setNextExecuteIds
(
String
.
join
(
","
,
roleListNext
));
contract
.
setStatus
(
String
.
valueOf
(
WorkFlowStatusEnum
.
MAIN_RECEIVE
.
getPass
()));
contract
.
setNextTaskId
(
nextTaskId
);
contract
.
setNextExecuteUserIds
(
nextUserIds
);
commonService
.
deleteTaskModel
(
contract
.
getSequenceNbr
()
+
""
);
executeOneStep
(
contract
,
taskName
,
nextUserIds
,
"0"
);
// redis流程实时数据更新
commonService
.
saveExecuteFlowData2Redis
(
contract
.
getInstanceId
(),
this
.
buildInstanceRuntimeData
(
contract
));
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
lock
.
isHeldByCurrentThread
()){
lock
.
unlock
();
}
}
contract
.
setPromoter
(
RequestContext
.
getExeUserId
());
contract
.
setNextExecuteIds
(
String
.
join
(
","
,
roleListNext
));
contract
.
setStatus
(
String
.
valueOf
(
WorkFlowStatusEnum
.
MAIN_RECEIVE
.
getPass
()));
contract
.
setNextTaskId
(
nextTaskId
);
contract
.
setNextExecuteUserIds
(
nextUserIds
);
commonService
.
deleteTaskModel
(
contract
.
getSequenceNbr
()
+
""
);
executeOneStep
(
contract
,
taskName
,
nextUserIds
,
"0"
);
}
}
else
{
List
<
TaskModelDto
>
modelDtos
=
new
ArrayList
<>();
...
...
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