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
4ca58000
Commit
4ca58000
authored
May 29, 2024
by
suhuiguang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.开通、报检并发问题处理
parent
ee5b9cf6
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
107 additions
and
12 deletions
+107
-12
InstanceRuntimeData.java
.../amos/boot/module/jyjc/api/model/InstanceRuntimeData.java
+34
-0
JyjcOpeningApplicationController.java
...jyjc/biz/controller/JyjcOpeningApplicationController.java
+4
-4
CommonserviceImpl.java
.../boot/module/jyjc/biz/service/impl/CommonserviceImpl.java
+69
-8
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/InstanceRuntimeData.java
0 → 100644
View file @
4ca58000
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
api
.
model
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* @author Administrator
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
InstanceRuntimeData
implements
Serializable
{
/**
* 下一个执行节点id
*/
private
String
nextTaskId
;
/**
* 最近流程执行人
*/
private
String
promoter
;
/**
* 下一节点执行人
*/
private
String
nextExecuteUserIds
;
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/controller/JyjcOpeningApplicationController.java
View file @
4ca58000
...
...
@@ -16,7 +16,6 @@ import com.yeejoin.amos.feign.privilege.model.RoleModel;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.web.bind.annotation.*
;
import
org.typroject.tyboot.core.foundation.context.RequestContext
;
import
org.typroject.tyboot.core.foundation.enumeration.UserType
;
...
...
@@ -37,7 +36,6 @@ import java.util.stream.Collectors;
@RestController
@Api
(
tags
=
"检验业务申请单api"
)
@RequestMapping
(
value
=
"/jyjc-opening-application"
)
@EnableScheduling
public
class
JyjcOpeningApplicationController
extends
BaseController
{
@Autowired
...
...
@@ -54,9 +52,11 @@ public class JyjcOpeningApplicationController extends BaseController {
public
ResponseModel
<
JyjcOpeningApplicationModel
>
save
(
@RequestBody
JSONObject
model
)
{
JyjcOpeningApplicationModel
jyjcOpeningApplicationModel
=
new
JyjcOpeningApplicationModel
();
// 兼容工作台暂存逻辑、编辑时报错逻辑
if
(
model
.
containsKey
(
"applyInfo"
))
{
// 工作台暂存逻辑
if
(
model
.
containsKey
(
"applyInfo"
))
{
// 工作台暂存逻辑
BeanUtil
.
copyProperties
(
model
.
get
(
"applyInfo"
),
jyjcOpeningApplicationModel
);
}
else
{
// 详情保存逻辑
}
else
{
// 详情保存逻辑
BeanUtil
.
copyProperties
(
model
,
jyjcOpeningApplicationModel
);
}
return
ResponseHelper
.
buildResponse
(
jyjcOpeningApplicationServiceImpl
.
saveOrUpdateModel
(
jyjcOpeningApplicationModel
,
false
));
...
...
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/CommonserviceImpl.java
View file @
4ca58000
...
...
@@ -9,19 +9,20 @@ import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
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.OpenBizTypeEnum
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.InstanceRuntimeData
;
import
com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseEnterpriseInfoDto
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo
;
import
com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseEnterpriseInfoMapper
;
import
com.yeejoin.amos.boot.module.ymt.api.mapper.TzsUserInfoMapper
;
import
com.yeejoin.amos.feign.systemctl.Systemctl
;
import
org.redisson.api.RBucket
;
import
org.redisson.api.RedissonClient
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
org.typroject.tyboot.core.foundation.context.RequestContext
;
import
org.typroject.tyboot.core.restful.exception.instance.BadRequest
;
import
java.util.HashMap
;
import
java.util.List
;
@Service
...
...
@@ -47,6 +48,9 @@ public class CommonserviceImpl {
@Autowired
TzBaseEnterpriseInfoMapper
enterpriseInfoMapper
;
@Autowired
RedissonClient
redissonClient
;
/**
* @return ReginParams
...
...
@@ -109,12 +113,69 @@ public class CommonserviceImpl {
}
@Async
public
void
sendMessage
(
HashMap
<
String
,
String
>
smsParams
,
List
<
String
>
phones
)
{
for
(
String
phone
:
phones
)
{
smsParams
.
put
(
"mobile"
,
phone
);
Systemctl
.
smsClient
.
sendCommonSms
(
smsParams
);
/**
* 执行流程时前置校验是否已经执行
*
* @param taskId 任务id
* @param instanceId 实例id
*/
public
void
checkForExecuteFlow
(
String
taskId
,
String
instanceId
)
{
InstanceRuntimeData
instanceRuntimeData
=
getInstanceRuntimeData
(
instanceId
);
if
(
instanceRuntimeData
==
null
)
{
throw
new
BadRequest
(
"当前流程已经被执行!请重新打开页面查看并执行!"
);
}
// 当前任务id与当前任务id不一致时,不让操作,解决老页面没关闭,但是流程已经被被人执行(通过、驳回、撤回),工作流未限制错误
String
currentTaskId
=
instanceRuntimeData
.
getNextTaskId
();
if
(!
taskId
.
equals
(
currentTaskId
))
{
throw
new
BadRequest
(
"当前流程已经被执行!请重新打开页面查看并执行!"
);
}
// 当前流程已经被转办给其他人或者页面按钮问题导致的权限未控制
String
nextExecuteUserIds
=
instanceRuntimeData
.
getNextExecuteUserIds
();
if
(!
nextExecuteUserIds
.
contains
(
RequestContext
.
getExeUserId
()))
{
throw
new
BadRequest
(
"当前登录人无执行权限!"
);
}
}
private
InstanceRuntimeData
getInstanceRuntimeData
(
String
instanceId
)
{
RBucket
<
InstanceRuntimeData
>
rBucket
=
redissonClient
.
getBucket
(
buildJgInstanceDataKey
(
instanceId
));
return
rBucket
.
get
();
}
private
static
String
buildJgInstanceDataKey
(
String
instanceId
)
{
return
"JC_INSTANCE_DATA:"
+
instanceId
;
}
/**
* 最新流程数据缓存
*
* @param instanceId 实例id
* @param instanceData 流程数据
*/
public
void
saveExecuteFlowData2Redis
(
String
instanceId
,
InstanceRuntimeData
instanceData
)
{
redissonClient
.
getBucket
(
buildJgInstanceDataKey
(
instanceId
)).
set
(
instanceData
);
}
/**
* 撤回时校验流程是否已经执行
*
* @param taskId 前端业务上送任务id
* @param instanceId 实例id
*/
public
void
checkForRevocationFlow
(
String
taskId
,
String
instanceId
)
{
InstanceRuntimeData
instanceRuntimeData
=
getInstanceRuntimeData
(
instanceId
);
if
(
instanceRuntimeData
==
null
)
{
throw
new
BadRequest
(
"当前流程已经被执行!请重新打开页面查看并执行!"
);
}
// 前端页面上送任务id与当前任务id不一致时,不让操作,解决老页面没关闭,但是流程已经被被人执行(通过、驳回、撤回),工作流未限制错误
String
currentTaskId
=
instanceRuntimeData
.
getNextTaskId
();
if
(!
taskId
.
equals
(
currentTaskId
))
{
throw
new
BadRequest
(
"当前流程已经被执行!请重新打开页面查看并执行!"
);
}
if
(!
instanceRuntimeData
.
getPromoter
().
equals
(
RequestContext
.
getExeUserId
()))
{
throw
new
BadRequest
(
"无权限执行该任务"
);
}
}
}
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