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
38ed946d
Commit
38ed946d
authored
May 30, 2024
by
suhuiguang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.增加并发控制所
parent
4ca58000
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
696 additions
and
552 deletions
+696
-552
CommonController.java
...mos/boot/module/jyjc/biz/controller/CommonController.java
+2
-2
JyjcInspectionApplicationController.java
...c/biz/controller/JyjcInspectionApplicationController.java
+7
-71
JyjcOpeningApplicationController.java
...jyjc/biz/controller/JyjcOpeningApplicationController.java
+8
-27
InspectionDetectionSaveToDbEventListener.java
...nt/listener/InspectionDetectionSaveToDbEventListener.java
+2
-2
ApplicationRunnerImpl.java
...os/boot/module/jyjc/biz/runner/ApplicationRunnerImpl.java
+29
-0
TaskModelServiceImpl.java
...os/boot/module/jyjc/biz/service/TaskModelServiceImpl.java
+96
-62
CommonserviceImpl.java
.../boot/module/jyjc/biz/service/impl/CommonserviceImpl.java
+11
-4
JyjcInspectionApplicationServiceImpl.java
...iz/service/impl/JyjcInspectionApplicationServiceImpl.java
+252
-221
JyjcInspectionResultServiceImpl.java
...yjc/biz/service/impl/JyjcInspectionResultServiceImpl.java
+1
-1
JyjcOpeningApplicationServiceImpl.java
...c/biz/service/impl/JyjcOpeningApplicationServiceImpl.java
+288
-162
No files found.
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/controller/CommonController.java
View file @
38ed946d
...
@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
...
@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import
com.yeejoin.amos.boot.biz.common.controller.BaseController
;
import
com.yeejoin.amos.boot.biz.common.controller.BaseController
;
import
com.yeejoin.amos.boot.module.jyjc.biz.job.InspectionExpireRemindJob
;
import
com.yeejoin.amos.boot.module.jyjc.biz.job.InspectionExpireRemindJob
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.TaskModelServiceImpl
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.TaskModelServiceImpl
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.impl.Common
s
erviceImpl
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.impl.Common
S
erviceImpl
;
import
com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseEnterpriseInfoDto
;
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.TzBaseEnterpriseInfo
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo
;
...
@@ -36,7 +36,7 @@ import java.util.stream.Collectors;
...
@@ -36,7 +36,7 @@ import java.util.stream.Collectors;
public
class
CommonController
extends
BaseController
{
public
class
CommonController
extends
BaseController
{
@Autowired
@Autowired
Common
s
erviceImpl
commonserviceImpl
;
Common
S
erviceImpl
commonserviceImpl
;
@Autowired
@Autowired
TaskModelServiceImpl
taskModelService
;
TaskModelServiceImpl
taskModelService
;
...
...
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 @
38ed946d
...
@@ -56,7 +56,7 @@ public class JyjcInspectionApplicationController extends BaseController {
...
@@ -56,7 +56,7 @@ public class JyjcInspectionApplicationController extends BaseController {
*/
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@PostMapping
(
value
=
"/save"
)
@PostMapping
(
value
=
"/save"
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"
新增
"
,
notes
=
"新增"
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"
暂存、提交
"
,
notes
=
"新增"
)
public
ResponseModel
<
List
<
JyjcInspectionApplicationModel
>>
save
(
@RequestBody
JSONObject
model
)
{
public
ResponseModel
<
List
<
JyjcInspectionApplicationModel
>>
save
(
@RequestBody
JSONObject
model
)
{
if
(
model
.
containsKey
(
basic
))
{
if
(
model
.
containsKey
(
basic
))
{
JSONObject
finallyJson
=
new
JSONObject
();
JSONObject
finallyJson
=
new
JSONObject
();
...
@@ -69,7 +69,7 @@ public class JyjcInspectionApplicationController extends BaseController {
...
@@ -69,7 +69,7 @@ public class JyjcInspectionApplicationController extends BaseController {
finallyJson
.
putAll
(
filePageDataObj
);
finallyJson
.
putAll
(
filePageDataObj
);
model
=
finallyJson
;
model
=
finallyJson
;
}
}
// operationType: 1-暂存
// operationType: 1-暂存
0-提交
ReginParams
selectedOrgInfo
=
getSelectedOrgInfo
();
ReginParams
selectedOrgInfo
=
getSelectedOrgInfo
();
model
.
put
(
"applicationUnitCode"
,
selectedOrgInfo
.
getCompany
().
getCompanyCode
());
model
.
put
(
"applicationUnitCode"
,
selectedOrgInfo
.
getCompany
().
getCompanyCode
());
...
@@ -124,67 +124,6 @@ public class JyjcInspectionApplicationController extends BaseController {
...
@@ -124,67 +124,6 @@ public class JyjcInspectionApplicationController extends BaseController {
return
ResponseHelper
.
buildResponse
(
jyjcInspectionApplicationServiceImpl
.
selectBySeq
(
sequenceNbr
));
return
ResponseHelper
.
buildResponse
(
jyjcInspectionApplicationServiceImpl
.
selectBySeq
(
sequenceNbr
));
}
}
/**
* 列表分页查询
*
* @param current 当前页
* @param current 每页大小
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/pageByInstitution"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"分页查询(检验机构)"
,
notes
=
"分页查询(检验机构)"
)
public
ResponseModel
<
Page
<
JyjcInspectionApplicationModel
>>
queryForPageByInstitution
(
@RequestParam
(
value
=
"current"
)
int
current
,
@RequestParam
(
value
=
"size"
)
int
size
,
@RequestParam
(
required
=
false
)
String
applicationNo
,
@RequestParam
(
required
=
false
)
String
inspectionClassify
,
@RequestParam
(
required
=
false
)
String
applicationUnitCode
,
@RequestParam
(
required
=
false
)
String
applicationUnitName
,
@RequestParam
(
required
=
false
)
String
inspectionUnitName
,
@RequestParam
(
required
=
false
)
String
equipClassify
,
@RequestParam
(
required
=
false
)
String
inspectionUnitCode
,
@RequestParam
(
required
=
false
)
String
applicationDate
,
@RequestParam
(
required
=
false
)
String
acceptDate
,
@RequestParam
(
required
=
false
)
String
inspectionChargePerson
,
@RequestParam
(
required
=
false
)
String
status
,
@RequestParam
(
required
=
false
)
String
roles
,
String
bizType
)
{
Page
<
JyjcInspectionApplication
>
page
=
new
Page
<
JyjcInspectionApplication
>();
page
.
setCurrent
(
current
);
page
.
setSize
(
size
);
ReginParams
reginParams
=
getSelectedOrgInfo
();
inspectionUnitCode
=
reginParams
.
getCompany
().
getCompanyCode
();
return
ResponseHelper
.
buildResponse
(
jyjcInspectionApplicationServiceImpl
.
queryForJyjcInspectionApplicationPage
(
page
,
applicationNo
,
inspectionClassify
,
applicationUnitCode
,
equipClassify
,
inspectionUnitCode
,
applicationUnitName
,
inspectionUnitName
,
applicationDate
,
acceptDate
,
inspectionChargePerson
,
status
,
bizType
));
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/pageByCompany"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"分页查询(报检单位)"
,
notes
=
"分页查询(报检单位)"
)
public
ResponseModel
<
Page
<
JyjcInspectionApplicationModel
>>
queryForPageByCompany
(
@RequestParam
(
value
=
"current"
)
int
current
,
@RequestParam
(
value
=
"size"
)
int
size
,
@RequestParam
(
required
=
false
)
String
applicationNo
,
@RequestParam
(
required
=
false
)
String
inspectionClassify
,
@RequestParam
(
required
=
false
)
String
applicationUnitCode
,
@RequestParam
(
required
=
false
)
String
equipClassify
,
@RequestParam
(
required
=
false
)
String
inspectionUnitCode
,
@RequestParam
(
required
=
false
)
String
applicationUnitName
,
@RequestParam
(
required
=
false
)
String
inspectionUnitName
,
@RequestParam
(
required
=
false
)
String
applicationDate
,
@RequestParam
(
required
=
false
)
String
acceptDate
,
@RequestParam
(
required
=
false
)
String
inspectionChargePerson
,
@RequestParam
(
required
=
false
)
String
roles
,
@RequestParam
(
required
=
false
)
String
status
,
String
bizType
)
{
Page
<
JyjcInspectionApplication
>
page
=
new
Page
<
JyjcInspectionApplication
>();
page
.
setCurrent
(
current
);
page
.
setSize
(
size
);
ReginParams
reginParams
=
getSelectedOrgInfo
();
applicationUnitCode
=
reginParams
.
getCompany
().
getCompanyCode
();
return
ResponseHelper
.
buildResponse
(
jyjcInspectionApplicationServiceImpl
.
queryForJyjcInspectionApplicationPage
(
page
,
applicationNo
,
inspectionClassify
,
applicationUnitCode
,
equipClassify
,
inspectionUnitCode
,
applicationUnitName
,
inspectionUnitName
,
applicationDate
,
acceptDate
,
inspectionChargePerson
,
status
,
bizType
));
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@PostMapping
(
value
=
"/pageList"
)
@PostMapping
(
value
=
"/pageList"
)
...
@@ -226,11 +165,7 @@ public class JyjcInspectionApplicationController extends BaseController {
...
@@ -226,11 +165,7 @@ public class JyjcInspectionApplicationController extends BaseController {
@PostMapping
(
value
=
"/flow/{type}/receive"
)
@PostMapping
(
value
=
"/flow/{type}/receive"
)
public
ResponseModel
executeFlow
(
@PathVariable
(
value
=
"type"
)
String
type
,
@RequestBody
Map
<
String
,
Object
>
params
)
{
public
ResponseModel
executeFlow
(
@PathVariable
(
value
=
"type"
)
String
type
,
@RequestBody
Map
<
String
,
Object
>
params
)
{
params
.
put
(
"type"
,
type
);
params
.
put
(
"type"
,
type
);
try
{
jyjcInspectionApplicationServiceImpl
.
doReceive
(
params
);
jyjcInspectionApplicationServiceImpl
.
doReceive
(
params
);
}
catch
(
Exception
e
)
{
return
CommonResponseUtil
.
failure
(
"该项流程发生变化,请返回列表刷新查看状态后重试"
);
}
HashMap
<
String
,
String
>
result
=
new
HashMap
<>();
HashMap
<
String
,
String
>
result
=
new
HashMap
<>();
result
.
put
(
"result"
,
"success"
);
result
.
put
(
"result"
,
"success"
);
return
ResponseHelper
.
buildResponse
(
result
);
return
ResponseHelper
.
buildResponse
(
result
);
...
@@ -264,12 +199,13 @@ public class JyjcInspectionApplicationController extends BaseController {
...
@@ -264,12 +199,13 @@ public class JyjcInspectionApplicationController extends BaseController {
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"撤回"
,
notes
=
"撤回"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"撤回"
,
notes
=
"撤回"
)
@GetMapping
(
value
=
"/flow/rollback"
)
@GetMapping
(
value
=
"/flow/rollback"
)
public
ResponseModel
<
Boolean
>
doRollbackFlow
(
@RequestParam
(
"sequenceNbr"
)
String
sequenceNbr
)
{
public
ResponseModel
<
Boolean
>
doRollbackFlow
(
@RequestParam
(
"sequenceNbr"
)
String
sequenceNbr
,
return
ResponseHelper
.
buildResponse
(
jyjcInspectionApplicationServiceImpl
.
doRollback
(
sequenceNbr
));
@RequestParam
(
"instanceId"
)
String
instanceId
,
@RequestParam
(
"nextTaskId"
)
String
nextTaskId
)
{
return
ResponseHelper
.
buildResponse
(
jyjcInspectionApplicationServiceImpl
.
doRollback
(
sequenceNbr
,
instanceId
,
nextTaskId
));
}
}
/**
/**
* 查询指定设备种类的设备列表
*
*
* @return
* @return
*/
*/
...
...
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 @
38ed946d
...
@@ -48,7 +48,7 @@ public class JyjcOpeningApplicationController extends BaseController {
...
@@ -48,7 +48,7 @@ public class JyjcOpeningApplicationController extends BaseController {
*/
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@PostMapping
(
value
=
"/save"
)
@PostMapping
(
value
=
"/save"
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"新增
"
,
notes
=
"新增
"
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"新增
、编辑的保存"
,
notes
=
"新增、编辑的保存
"
)
public
ResponseModel
<
JyjcOpeningApplicationModel
>
save
(
@RequestBody
JSONObject
model
)
{
public
ResponseModel
<
JyjcOpeningApplicationModel
>
save
(
@RequestBody
JSONObject
model
)
{
JyjcOpeningApplicationModel
jyjcOpeningApplicationModel
=
new
JyjcOpeningApplicationModel
();
JyjcOpeningApplicationModel
jyjcOpeningApplicationModel
=
new
JyjcOpeningApplicationModel
();
// 兼容工作台暂存逻辑、编辑时报错逻辑
// 兼容工作台暂存逻辑、编辑时报错逻辑
...
@@ -59,26 +59,13 @@ public class JyjcOpeningApplicationController extends BaseController {
...
@@ -59,26 +59,13 @@ public class JyjcOpeningApplicationController extends BaseController {
// 详情保存逻辑
// 详情保存逻辑
BeanUtil
.
copyProperties
(
model
,
jyjcOpeningApplicationModel
);
BeanUtil
.
copyProperties
(
model
,
jyjcOpeningApplicationModel
);
}
}
return
ResponseHelper
.
buildResponse
(
jyjcOpeningApplicationServiceImpl
.
saveOrUpdate
Model
(
jyjcOpeningApplicationModel
,
false
));
return
ResponseHelper
.
buildResponse
(
jyjcOpeningApplicationServiceImpl
.
saveOrUpdate
(
jyjcOpeningApplicationModel
));
}
}
/**
* 根据sequenceNbr更新
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@PutMapping
(
value
=
"/{sequenceNbr}"
)
@ApiOperation
(
httpMethod
=
"PUT"
,
value
=
"更新"
,
notes
=
"更新"
)
public
ResponseModel
<
JyjcOpeningApplicationModel
>
updateBySequenceNbrJyjcOpeningApplication
(
@RequestBody
JyjcOpeningApplicationModel
model
,
@PathVariable
(
value
=
"sequenceNbr"
)
Long
sequenceNbr
)
{
model
.
setSequenceNbr
(
sequenceNbr
);
return
ResponseHelper
.
buildResponse
(
jyjcOpeningApplicationServiceImpl
.
saveOrUpdateModel
(
model
,
false
));
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@PutMapping
(
value
=
"/submit"
)
@PutMapping
(
value
=
"/submit"
)
@ApiOperation
(
httpMethod
=
"PUT"
,
value
=
"保存并提交"
,
notes
=
"保存并提交"
)
@ApiOperation
(
httpMethod
=
"PUT"
,
value
=
"保存并提交
、提交
"
,
notes
=
"保存并提交"
)
public
ResponseModel
<
List
<
JyjcOpeningApplicationModel
>>
updateBySequenceNbrAndStartFlow
(
@RequestBody
JSONObject
jsonObject
,
@RequestParam
(
value
=
"sequenceNbr"
,
required
=
false
)
Long
sequenceNbr
)
{
public
ResponseModel
<
List
<
JyjcOpeningApplicationModel
>>
updateBySequenceNbrAndStartFlow
(
@RequestBody
JSONObject
jsonObject
,
@RequestParam
(
value
=
"sequenceNbr"
,
required
=
false
)
Long
sequenceNbr
)
{
JyjcOpeningApplicationModel
model
=
new
JyjcOpeningApplicationModel
();
JyjcOpeningApplicationModel
model
=
new
JyjcOpeningApplicationModel
();
if
(
jsonObject
.
containsKey
(
"applyInfo"
))
{
if
(
jsonObject
.
containsKey
(
"applyInfo"
))
{
...
@@ -93,18 +80,10 @@ public class JyjcOpeningApplicationController extends BaseController {
...
@@ -93,18 +80,10 @@ public class JyjcOpeningApplicationController extends BaseController {
throw
new
BadRequest
(
"企业资质信息和检验人员信息为空,无法提交!"
);
throw
new
BadRequest
(
"企业资质信息和检验人员信息为空,无法提交!"
);
}
}
}
}
JyjcOpeningApplicationModel
data
=
jyjcOpeningApplicationServiceImpl
.
s
aveOrUpdateModel
(
model
,
true
);
JyjcOpeningApplicationModel
data
=
jyjcOpeningApplicationServiceImpl
.
s
ubmitApplication
(
model
);
return
ResponseHelper
.
buildResponse
(
Collections
.
singletonList
(
data
));
return
ResponseHelper
.
buildResponse
(
Collections
.
singletonList
(
data
));
}
}
@Deprecated
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@PostMapping
(
value
=
"/startFlow/{sequenceNbr}"
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"重新提交开通申请"
,
notes
=
"重新提交开通申请"
)
public
ResponseModel
<
JyjcOpeningApplicationModel
>
resubmitJyjcOpeningApplication
(
@RequestBody
JyjcOpeningApplicationModel
model
,
@PathVariable
(
value
=
"sequenceNbr"
)
Long
sequenceNbr
)
{
model
.
setSequenceNbr
(
sequenceNbr
);
return
ResponseHelper
.
buildResponse
(
jyjcOpeningApplicationServiceImpl
.
resubmit
(
model
));
}
/**
/**
* 根据sequenceNbr删除
* 根据sequenceNbr删除
...
@@ -200,8 +179,10 @@ public class JyjcOpeningApplicationController extends BaseController {
...
@@ -200,8 +179,10 @@ public class JyjcOpeningApplicationController extends BaseController {
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"撤回业务开通申请"
,
notes
=
"撤回业务开通申请"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"撤回业务开通申请"
,
notes
=
"撤回业务开通申请"
)
@GetMapping
(
value
=
"/rollBackFlow"
)
@GetMapping
(
value
=
"/rollBackFlow"
)
public
ResponseModel
<
Object
>
overflow
(
@RequestParam
(
"sequenceNbr"
)
String
sequenceNbr
)
{
public
ResponseModel
<
Object
>
overflow
(
@RequestParam
(
"sequenceNbr"
)
String
sequenceNbr
,
return
ResponseHelper
.
buildResponse
(
jyjcOpeningApplicationServiceImpl
.
stopFlow
(
sequenceNbr
));
@RequestParam
(
"instanceId"
)
String
instanceId
,
@RequestParam
(
"nextTaskId"
)
String
nextTaskId
)
{
return
ResponseHelper
.
buildResponse
(
jyjcOpeningApplicationServiceImpl
.
stopFlow
(
sequenceNbr
,
instanceId
,
nextTaskId
));
}
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
...
...
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/event/listener/InspectionDetectionSaveToDbEventListener.java
View file @
38ed946d
...
@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Sequence;
...
@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Sequence;
import
com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResult
;
import
com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResult
;
import
com.yeejoin.amos.boot.module.jyjc.biz.event.InspectionDetectionSaveToDbEvent
;
import
com.yeejoin.amos.boot.module.jyjc.biz.event.InspectionDetectionSaveToDbEvent
;
import
com.yeejoin.amos.boot.module.jyjc.biz.event.publisher.BizEmqPublisher
;
import
com.yeejoin.amos.boot.module.jyjc.biz.event.publisher.BizEmqPublisher
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.impl.Common
s
erviceImpl
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.impl.Common
S
erviceImpl
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.InspectionDetectionInfo
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.InspectionDetectionInfo
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo
;
import
com.yeejoin.amos.boot.module.ymt.api.mapper.InspectionDetectionInfoMapper
;
import
com.yeejoin.amos.boot.module.ymt.api.mapper.InspectionDetectionInfoMapper
;
...
@@ -37,7 +37,7 @@ public class InspectionDetectionSaveToDbEventListener implements ApplicationList
...
@@ -37,7 +37,7 @@ public class InspectionDetectionSaveToDbEventListener implements ApplicationList
private
int
threadNumber
;
private
int
threadNumber
;
@Autowired
@Autowired
Common
s
erviceImpl
commonService
;
Common
S
erviceImpl
commonService
;
@Autowired
@Autowired
private
Sequence
sequence
;
private
Sequence
sequence
;
...
...
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/runner/ApplicationRunnerImpl.java
0 → 100644
View file @
38ed946d
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
biz
.
runner
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionApplicationServiceImpl
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcOpeningApplicationServiceImpl
;
import
org.springframework.boot.ApplicationArguments
;
import
org.springframework.boot.ApplicationRunner
;
import
org.springframework.stereotype.Component
;
/**
* @author Administrator
*/
@Component
public
class
ApplicationRunnerImpl
implements
ApplicationRunner
{
private
JyjcInspectionApplicationServiceImpl
inspectionApplicationService
;
private
JyjcOpeningApplicationServiceImpl
openingApplicationService
;
public
ApplicationRunnerImpl
(
JyjcInspectionApplicationServiceImpl
inspectionApplicationService
,
JyjcOpeningApplicationServiceImpl
openingApplicationService
)
{
this
.
inspectionApplicationService
=
inspectionApplicationService
;
this
.
openingApplicationService
=
openingApplicationService
;
}
@Override
public
void
run
(
ApplicationArguments
args
)
{
inspectionApplicationService
.
initFlowData2Redis
();
openingApplicationService
.
initFlowData2Redis
();
}
}
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
View file @
38ed946d
...
@@ -11,9 +11,11 @@ import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
...
@@ -11,9 +11,11 @@ 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
;
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.mapper.JyjcBaseMapper
;
import
com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcBaseMapper
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.InstanceRuntimeData
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.TaskModelDto
;
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.api.model.WorkflowResultDto
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.impl.CmWorkflowServiceImpl
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.impl.CmWorkflowServiceImpl
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.impl.CommonServiceImpl
;
import
com.yeejoin.amos.boot.module.jyjc.biz.util.JsonUtils
;
import
com.yeejoin.amos.boot.module.jyjc.biz.util.JsonUtils
;
import
com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum
;
import
com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum
;
import
com.yeejoin.amos.feign.privilege.model.AgencyUserModel
;
import
com.yeejoin.amos.feign.privilege.model.AgencyUserModel
;
...
@@ -23,6 +25,8 @@ import com.yeejoin.amos.feign.workflow.model.ActTaskDTO;
...
@@ -23,6 +25,8 @@ import com.yeejoin.amos.feign.workflow.model.ActTaskDTO;
import
com.yeejoin.amos.feign.workflow.model.FlowTaskVo
;
import
com.yeejoin.amos.feign.workflow.model.FlowTaskVo
;
import
com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO
;
import
com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
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
;
...
@@ -37,6 +41,7 @@ import java.lang.reflect.Field;
...
@@ -37,6 +41,7 @@ import java.lang.reflect.Field;
import
java.lang.reflect.Modifier
;
import
java.lang.reflect.Modifier
;
import
java.net.URLEncoder
;
import
java.net.URLEncoder
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -46,6 +51,9 @@ public class TaskModelServiceImpl {
...
@@ -46,6 +51,9 @@ public class TaskModelServiceImpl {
private
RedisUtils
redisUtils
;
private
RedisUtils
redisUtils
;
@Autowired
@Autowired
CommonServiceImpl
commonService
;
@Autowired
IDataDictionaryService
iDataDictionaryService
;
IDataDictionaryService
iDataDictionaryService
;
@Value
(
"classpath:/json/bizTypeInfo.json"
)
@Value
(
"classpath:/json/bizTypeInfo.json"
)
...
@@ -57,11 +65,14 @@ public class TaskModelServiceImpl {
...
@@ -57,11 +65,14 @@ public class TaskModelServiceImpl {
@Autowired
@Autowired
JyjcBaseMapper
jyjcBaseMapper
;
JyjcBaseMapper
jyjcBaseMapper
;
@Autowired
RedissonClient
redissonClient
;
public
void
deleteTaskModel
(
String
id
)
{
public
void
deleteTaskModel
(
String
id
)
{
List
<
TaskV2Model
>
result
=
Systemctl
.
taskV2Client
.
selectListByRelationId
(
id
).
getResult
();
List
<
TaskV2Model
>
result
=
Systemctl
.
taskV2Client
.
selectListByRelationId
(
id
).
getResult
();
if
(
result
.
size
()
>
0
)
{
if
(
result
.
size
()
>
0
)
{
List
<
Long
>
idList
=
result
.
stream
().
map
(
TaskV2Model:
:
getSequenceNbr
).
collect
(
Collectors
.
toList
());
List
<
Long
>
idList
=
result
.
stream
().
map
(
TaskV2Model:
:
getSequenceNbr
).
collect
(
Collectors
.
toList
());
String
ids
=
idList
.
stream
().
map
(
Object:
:
toString
).
collect
(
Collectors
.
joining
(
","
));
String
ids
=
idList
.
stream
().
map
(
Object:
:
toString
).
collect
(
Collectors
.
joining
(
","
));
Systemctl
.
taskV2Client
.
delete
(
ids
);
Systemctl
.
taskV2Client
.
delete
(
ids
);
}
}
...
@@ -75,13 +86,13 @@ public class TaskModelServiceImpl {
...
@@ -75,13 +86,13 @@ public class TaskModelServiceImpl {
List
<
TaskV2Model
>
taskV2Models
=
new
ArrayList
<>();
List
<
TaskV2Model
>
taskV2Models
=
new
ArrayList
<>();
for
(
TaskModelDto
obj
:
list
)
{
for
(
TaskModelDto
obj
:
list
)
{
//判断是否是暂存 新增若无下一节点执行人即为暂存
//判断是否是暂存 新增若无下一节点执行人即为暂存
boolean
flag
=
StringUtils
.
isEmpty
(
obj
.
getNextExecuteUser
())
?
true
:
false
;
boolean
flag
=
StringUtils
.
isEmpty
(
obj
.
getNextExecuteUser
())
?
true
:
false
;
if
(
flag
){
if
(
flag
)
{
List
<
TaskV2Model
>
result
=
Systemctl
.
taskV2Client
.
selectListByRelationId
(
obj
.
getRelationId
()).
getResult
();
List
<
TaskV2Model
>
result
=
Systemctl
.
taskV2Client
.
selectListByRelationId
(
obj
.
getRelationId
()).
getResult
();
if
(
CollectionUtil
.
isNotEmpty
(
result
)
&&
result
.
size
()
>
0
){
if
(
CollectionUtil
.
isNotEmpty
(
result
)
&&
result
.
size
()
>
0
)
{
TaskV2Model
taskV2Model
=
result
.
get
(
0
);
TaskV2Model
taskV2Model
=
result
.
get
(
0
);
taskV2Model
.
setTaskContent
(
obj
.
getTaskContent
());
taskV2Model
.
setTaskContent
(
obj
.
getTaskContent
());
Systemctl
.
taskV2Client
.
update
(
taskV2Model
,
taskV2Model
.
getSequenceNbr
());
Systemctl
.
taskV2Client
.
update
(
taskV2Model
,
taskV2Model
.
getSequenceNbr
());
break
;
break
;
}
}
}
}
...
@@ -98,19 +109,19 @@ public class TaskModelServiceImpl {
...
@@ -98,19 +109,19 @@ public class TaskModelServiceImpl {
for
(
Map
map
:
urlList
)
{
for
(
Map
map
:
urlList
)
{
//获取暂存的可编辑页面url
//获取暂存的可编辑页面url
if
(
flag
&&
map
.
get
(
"type"
).
equals
(
obj
.
getTaskType
())
if
(
flag
&&
map
.
get
(
"type"
).
equals
(
obj
.
getTaskType
())
&&
map
.
get
(
"pageType"
).
equals
(
"draft"
)){
&&
map
.
get
(
"pageType"
).
equals
(
"draft"
))
{
model
.
setRoutePath
(
map
.
get
(
"url"
).
toString
()
+
urlParams
);
model
.
setRoutePath
(
map
.
get
(
"url"
).
toString
()
+
urlParams
);
break
;
break
;
}
}
//其他逻辑均按详情页面获取
//其他逻辑均按详情页面获取
else
if
(
map
.
get
(
"type"
).
equals
(
obj
.
getTaskType
())
else
if
(
map
.
get
(
"type"
).
equals
(
obj
.
getTaskType
())
&&
map
.
get
(
"pageType"
).
equals
(
null
==
obj
.
getPageType
()
?
"look"
:
obj
.
getPageType
()))
{
&&
map
.
get
(
"pageType"
).
equals
(
null
==
obj
.
getPageType
()
?
"look"
:
obj
.
getPageType
()))
{
model
.
setRoutePath
(
map
.
get
(
"url"
).
toString
().
replace
(
"{roleIds}"
,
obj
.
getNextExecuteUser
())
+
urlParams
+
"&nextExecuteUserIds="
+
model
.
getExecuteUserIds
());
model
.
setRoutePath
(
map
.
get
(
"url"
).
toString
().
replace
(
"{roleIds}"
,
obj
.
getNextExecuteUser
())
+
urlParams
+
"&nextExecuteUserIds="
+
model
.
getExecuteUserIds
());
break
;
break
;
}
}
}
}
//是true则为暂存 除公共部分统一处理
//是true则为暂存 除公共部分统一处理
if
(
flag
){
if
(
flag
)
{
model
.
setFlowStatus
(
FlowStatusEnum
.
TO_BE_SUBMITTED
.
getCode
());
model
.
setFlowStatus
(
FlowStatusEnum
.
TO_BE_SUBMITTED
.
getCode
());
model
.
setFlowStatusLabel
(
FlowStatusEnum
.
TO_BE_SUBMITTED
.
getName
());
model
.
setFlowStatusLabel
(
FlowStatusEnum
.
TO_BE_SUBMITTED
.
getName
());
model
.
setStartUserId
(
RequestContext
.
getExeUserId
());
model
.
setStartUserId
(
RequestContext
.
getExeUserId
());
...
@@ -124,14 +135,13 @@ public class TaskModelServiceImpl {
...
@@ -124,14 +135,13 @@ public class TaskModelServiceImpl {
model
.
setTaskName
(
BizTypeEnum
.
getNameByNum
(
obj
.
getTaskType
()));
model
.
setTaskName
(
BizTypeEnum
.
getNameByNum
(
obj
.
getTaskType
()));
model
.
setTaskTypeLabel
(
BizTypeEnum
.
getNameByCode
(
obj
.
getTaskType
()));
model
.
setTaskTypeLabel
(
BizTypeEnum
.
getNameByCode
(
obj
.
getTaskType
()));
// model.setTaskContent("【申请单号:"+obj.getTaskCode()+"】待提交");
// model.setTaskContent("【申请单号:"+obj.getTaskCode()+"】待提交");
}
else
{
}
else
{
model
.
setTaskStatus
(
0
);
model
.
setTaskStatus
(
0
);
model
.
setTaskTitle
(
obj
.
getStartUser
()
+
"发起了"
+
obj
.
getTaskName
());
model
.
setTaskTitle
(
obj
.
getStartUser
()
+
"发起了"
+
obj
.
getTaskName
());
}
}
model
.
setFlowInstanceId
(
model
.
getRelationId
());
model
.
setFlowInstanceId
(
model
.
getRelationId
());
model
.
setTaskSource
(
"workFlow"
);
model
.
setTaskSource
(
"workFlow"
);
model
.
setExtras
(
JSON
.
toJSONString
(
obj
.
getModel
()));
model
.
setExtras
(
JSON
.
toJSONString
(
obj
.
getModel
()));
// model.setTerminal(params.getOrDefault("terminal","WEB").toString());
model
.
setCreateDate
(
new
Date
());
model
.
setCreateDate
(
new
Date
());
model
.
setRecUserId
(
RequestContext
.
getExeUserId
());
model
.
setRecUserId
(
RequestContext
.
getExeUserId
());
model
.
setAgencyCode
(
RequestContext
.
getAgencyCode
());
model
.
setAgencyCode
(
RequestContext
.
getAgencyCode
());
...
@@ -142,7 +152,7 @@ public class TaskModelServiceImpl {
...
@@ -142,7 +152,7 @@ public class TaskModelServiceImpl {
}
}
public
void
updateTaskContentById
(
Map
<
String
,
Object
>
params
){
public
void
updateTaskContentById
(
Map
<
String
,
Object
>
params
)
{
List
<
TaskV2Model
>
result
=
Systemctl
.
taskV2Client
.
selectListByRelationId
(
params
.
get
(
"relationId"
).
toString
()).
getResult
();
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
());
List
<
TaskV2Model
>
collect
=
result
.
stream
().
sorted
((
r1
,
r2
)
->
r2
.
getSequenceNbr
().
compareTo
(
r1
.
getSequenceNbr
())).
collect
(
Collectors
.
toList
());
if
(
CollectionUtil
.
isNotEmpty
(
collect
))
{
if
(
CollectionUtil
.
isNotEmpty
(
collect
))
{
...
@@ -318,13 +328,13 @@ public class TaskModelServiceImpl {
...
@@ -318,13 +328,13 @@ public class TaskModelServiceImpl {
}
}
for
(
Map
map
:
urlList
)
{
for
(
Map
map
:
urlList
)
{
if
(
map
.
get
(
"type"
).
equals
(
obj
.
get
(
"taskType"
))
&&
map
.
get
(
"pageType"
).
equals
(
obj
.
getOrDefault
(
"pageType"
,
"edit"
)))
{
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
);
lastTaskModel
.
setRoutePath
(
map
.
get
(
"url"
).
toString
().
replace
(
"{roleIds}"
,
obj
.
get
(
"nextExecuteUser"
).
toString
())
+
urlParams
);
break
;
break
;
}
}
}
}
Systemctl
.
taskV2Client
.
update
(
lastTaskModel
,
lastTaskModel
.
getSequenceNbr
());
Systemctl
.
taskV2Client
.
update
(
lastTaskModel
,
lastTaskModel
.
getSequenceNbr
());
}
else
if
(
list
.
size
()
==
1
)
{
}
else
if
(
list
.
size
()
==
1
)
{
model
.
setExecuteUserIds
(
model
.
getStartUserId
());
model
.
setExecuteUserIds
(
model
.
getStartUserId
());
model
.
setTaskStatusLabel
(
"重新提交"
);
model
.
setTaskStatusLabel
(
"重新提交"
);
model
.
setTaskStatus
(
FlowStatusEnum
.
TO_SUBMITTED
.
getCode
());
model
.
setTaskStatus
(
FlowStatusEnum
.
TO_SUBMITTED
.
getCode
());
...
@@ -348,13 +358,13 @@ public class TaskModelServiceImpl {
...
@@ -348,13 +358,13 @@ public class TaskModelServiceImpl {
private
static
String
toQueryParams2
(
JSONObject
jsonObject
)
{
private
static
String
toQueryParams2
(
JSONObject
jsonObject
)
{
StringBuilder
sb
=
new
StringBuilder
();
StringBuilder
sb
=
new
StringBuilder
();
Set
<
String
>
keys
=
jsonObject
.
keySet
();
Set
<
String
>
keys
=
jsonObject
.
keySet
();
keys
.
forEach
(
key
->
{
keys
.
forEach
(
key
->
{
Object
value
=
jsonObject
.
get
(
key
);
Object
value
=
jsonObject
.
get
(
key
);
if
(
sb
.
length
()
>
0
)
{
if
(
sb
.
length
()
>
0
)
{
sb
.
append
(
'&'
);
sb
.
append
(
'&'
);
}
}
try
{
try
{
if
(
value
!=
null
&&
!
""
.
equals
(
value
))
{
if
(
value
!=
null
&&
!
""
.
equals
(
value
))
{
sb
.
append
(
URLEncoder
.
encode
(
key
,
"UTF-8"
))
sb
.
append
(
URLEncoder
.
encode
(
key
,
"UTF-8"
))
.
append
(
'='
)
.
append
(
'='
)
.
append
(
URLEncoder
.
encode
(
value
.
toString
(),
"UTF-8"
));
.
append
(
URLEncoder
.
encode
(
value
.
toString
(),
"UTF-8"
));
...
@@ -367,8 +377,6 @@ public class TaskModelServiceImpl {
...
@@ -367,8 +377,6 @@ public class TaskModelServiceImpl {
}
}
public
<
T
>
String
toQueryParams
(
T
obj
)
throws
UnsupportedEncodingException
{
public
<
T
>
String
toQueryParams
(
T
obj
)
throws
UnsupportedEncodingException
{
StringBuilder
sb
=
new
StringBuilder
();
StringBuilder
sb
=
new
StringBuilder
();
...
@@ -397,8 +405,6 @@ public class TaskModelServiceImpl {
...
@@ -397,8 +405,6 @@ public class TaskModelServiceImpl {
}
}
/**
/**
* 根据流程状态name 获取流程状态code
* 根据流程状态name 获取流程状态code
*
*
...
@@ -469,48 +475,76 @@ public class TaskModelServiceImpl {
...
@@ -469,48 +475,76 @@ public class TaskModelServiceImpl {
}
}
String
taskId
=
map
.
get
(
"nextTaskId"
).
toString
();
String
taskId
=
map
.
get
(
"nextTaskId"
).
toString
();
String
instanceId
=
map
.
get
(
"instanceId"
).
toString
();
String
instanceId
=
map
.
get
(
"instanceId"
).
toString
();
String
tableName
=
map
.
get
(
"tableName"
).
toString
();
String
lockKey
=
CommonServiceImpl
.
buildJcExecuteLockKey
(
instanceId
);
String
assignee
=
map
.
get
(
"assignee"
).
toString
();
RLock
lock
=
redissonClient
.
getLock
(
lockKey
);
try
{
FlowTaskVo
flowTaskVo
=
new
FlowTaskVo
();
boolean
isLocked
=
lock
.
tryLock
(
0
,
180
,
TimeUnit
.
SECONDS
);
flowTaskVo
.
setTaskId
(
taskId
);
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
flowTaskVo
.
setAssignee
(
assignee
);
if
(!
isLocked
)
{
ProcessTaskDTO
processTaskDTO
=
cmWorkflowService
.
assign
(
flowTaskVo
);
throw
new
BadRequest
(
"当前流程已经被执行!请重新打开页面查看并执行!"
);
//修改待办
}
List
<
TaskV2Model
>
result
=
Systemctl
.
taskV2Client
.
selectListByRelationId
(
instanceId
).
getResult
();
// 流程执行时,状态及权限校验
List
<
TaskV2Model
>
collect
=
result
.
stream
().
sorted
((
r1
,
r2
)
->
r2
.
getSequenceNbr
().
compareTo
(
r1
.
getSequenceNbr
())).
collect
(
Collectors
.
toList
());
commonService
.
checkForExecuteFlow
(
taskId
,
instanceId
);
if
(
collect
==
null
||
collect
.
size
()
==
0
)
{
String
tableName
=
map
.
get
(
"tableName"
).
toString
();
return
null
;
String
assignee
=
map
.
get
(
"assignee"
).
toString
();
FlowTaskVo
flowTaskVo
=
new
FlowTaskVo
();
flowTaskVo
.
setTaskId
(
taskId
);
flowTaskVo
.
setAssignee
(
assignee
);
ProcessTaskDTO
processTaskDTO
=
cmWorkflowService
.
assign
(
flowTaskVo
);
//修改待办
List
<
TaskV2Model
>
result
=
Systemctl
.
taskV2Client
.
selectListByRelationId
(
instanceId
).
getResult
();
List
<
TaskV2Model
>
collect
=
result
.
stream
().
sorted
((
r1
,
r2
)
->
r2
.
getSequenceNbr
().
compareTo
(
r1
.
getSequenceNbr
())).
collect
(
Collectors
.
toList
());
if
(
collect
.
size
()
==
0
)
{
return
null
;
}
TaskV2Model
taskV2Model
=
collect
.
get
(
0
);
taskV2Model
.
setExecuteUserIds
(
RequestContext
.
getExeUserId
());
taskV2Model
.
setTaskStatus
(
FlowStatusEnum
.
TO_BE_TRANSFER
.
getCode
());
taskV2Model
.
setTaskStatusLabel
(
FlowStatusEnum
.
TO_BE_TRANSFER
.
getName
());
taskV2Model
.
setEndUserId
(
RequestContext
.
getExeUserId
());
taskV2Model
.
setEndDate
(
new
Date
());
String
routhPath
=
taskV2Model
.
getRoutePath
().
replace
(
"nextExecuteUserIds"
,
"executeUserId"
)
+
"&nextExecuteUserIds="
+
assignee
;
taskV2Model
.
setRoutePath
(
routhPath
);
Systemctl
.
taskV2Client
.
update
(
taskV2Model
,
taskV2Model
.
getSequenceNbr
());
//创建新待办
taskV2Model
.
setExecuteUserIds
(
assignee
);
String
nextTaskId
=
processTaskDTO
.
getNextTask
().
get
(
0
).
getId
();
taskV2Model
.
setFlowCode
(
nextTaskId
);
String
routhPath1
=
routhPath
.
replace
(
"nextTaskId"
,
"nextTask"
)
+
"&nextTaskId="
+
nextTaskId
;
taskV2Model
.
setCreateDate
(
new
Date
());
taskV2Model
.
setRoutePath
(
routhPath1
);
taskV2Model
.
setTaskStatus
(
0
);
taskV2Model
.
setTaskStatusLabel
(
FlowStatusEnum
.
TO_BE_PROCESSED
.
getName
());
taskV2Model
.
setEndUserId
(
null
);
taskV2Model
.
setEndDate
(
null
);
taskV2Model
.
setSequenceNbr
(
null
);
Systemctl
.
taskV2Client
.
create
(
taskV2Model
);
String
key
=
map
.
get
(
"key"
).
toString
();
String
id
=
jyjcBaseMapper
.
selectBusinessData
(
tableName
,
instanceId
,
key
);
id
=
ObjectUtils
.
isEmpty
(
id
)
?
assignee
:
id
+
","
+
assignee
;
//修改业务数据
jyjcBaseMapper
.
updateBusinessData
(
tableName
,
assignee
,
id
,
instanceId
,
nextTaskId
,
key
);
// 更新流程中的流程数据
commonService
.
saveExecuteFlowData2Redis
(
instanceId
,
this
.
buildInstanceRuntimeData
(
assignee
,
""
,
nextTaskId
));
return
Boolean
.
TRUE
;
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
lock
.
isHeldByCurrentThread
())
{
lock
.
unlock
();
}
}
}
TaskV2Model
taskV2Model
=
collect
.
get
(
0
);
return
Boolean
.
FALSE
;
taskV2Model
.
setExecuteUserIds
(
RequestContext
.
getExeUserId
());
}
taskV2Model
.
setTaskStatus
(
FlowStatusEnum
.
TO_BE_TRANSFER
.
getCode
());
taskV2Model
.
setTaskStatusLabel
(
FlowStatusEnum
.
TO_BE_TRANSFER
.
getName
());
public
InstanceRuntimeData
buildInstanceRuntimeData
(
String
executeUserIds
,
String
promoter
,
String
nextTaskId
)
{
taskV2Model
.
setEndUserId
(
RequestContext
.
getExeUserId
());
return
InstanceRuntimeData
.
builder
()
taskV2Model
.
setEndDate
(
new
Date
());
.
nextExecuteUserIds
(
executeUserIds
)
String
routhPath
=
taskV2Model
.
getRoutePath
().
replace
(
"nextExecuteUserIds"
,
"executeUserId"
)
+
"&nextExecuteUserIds="
+
assignee
;
.
promoter
(
promoter
)
taskV2Model
.
setRoutePath
(
routhPath
);
.
nextTaskId
(
nextTaskId
)
Systemctl
.
taskV2Client
.
update
(
taskV2Model
,
taskV2Model
.
getSequenceNbr
());
.
build
();
//创建新待办
taskV2Model
.
setExecuteUserIds
(
assignee
);
String
nextTaskId
=
processTaskDTO
.
getNextTask
().
get
(
0
).
getId
();
taskV2Model
.
setFlowCode
(
nextTaskId
);
String
routhPath1
=
routhPath
.
replace
(
"nextTaskId"
,
"nextTask"
)
+
"&nextTaskId="
+
nextTaskId
;
taskV2Model
.
setCreateDate
(
new
Date
());
taskV2Model
.
setRoutePath
(
routhPath1
);
taskV2Model
.
setTaskStatus
(
0
);
taskV2Model
.
setTaskStatusLabel
(
FlowStatusEnum
.
TO_BE_PROCESSED
.
getName
());
taskV2Model
.
setEndUserId
(
null
);
taskV2Model
.
setEndDate
(
null
);
taskV2Model
.
setSequenceNbr
(
null
);
Systemctl
.
taskV2Client
.
create
(
taskV2Model
);
String
key
=
map
.
get
(
"key"
).
toString
();
String
id
=
jyjcBaseMapper
.
selectBusinessData
(
tableName
,
instanceId
,
key
);
id
=
ObjectUtils
.
isEmpty
(
id
)
?
assignee
:
id
+
","
+
assignee
;
//修改业务数据
jyjcBaseMapper
.
updateBusinessData
(
tableName
,
assignee
,
id
,
instanceId
,
nextTaskId
,
key
);
return
Boolean
.
TRUE
;
}
}
}
}
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 @
38ed946d
...
@@ -25,8 +25,11 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
...
@@ -25,8 +25,11 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import
java.util.List
;
import
java.util.List
;
/**
* @author Administrator
*/
@Service
@Service
public
class
Common
s
erviceImpl
{
public
class
Common
S
erviceImpl
{
@Value
(
"${jyjc.user-post:6615}"
)
@Value
(
"${jyjc.user-post:6615}"
)
private
String
jyjcUserPost
;
private
String
jyjcUserPost
;
...
@@ -138,14 +141,18 @@ public class CommonserviceImpl {
...
@@ -138,14 +141,18 @@ public class CommonserviceImpl {
}
}
private
InstanceRuntimeData
getInstanceRuntimeData
(
String
instanceId
)
{
private
InstanceRuntimeData
getInstanceRuntimeData
(
String
instanceId
)
{
RBucket
<
InstanceRuntimeData
>
rBucket
=
redissonClient
.
getBucket
(
buildJ
g
InstanceDataKey
(
instanceId
));
RBucket
<
InstanceRuntimeData
>
rBucket
=
redissonClient
.
getBucket
(
buildJ
c
InstanceDataKey
(
instanceId
));
return
rBucket
.
get
();
return
rBucket
.
get
();
}
}
private
static
String
buildJg
InstanceDataKey
(
String
instanceId
)
{
private
String
buildJc
InstanceDataKey
(
String
instanceId
)
{
return
"JC_INSTANCE_DATA:"
+
instanceId
;
return
"JC_INSTANCE_DATA:"
+
instanceId
;
}
}
public
static
String
buildJcExecuteLockKey
(
String
instanceId
)
{
return
"JC_INSTANCE_LOCK:"
+
instanceId
;
}
/**
/**
* 最新流程数据缓存
* 最新流程数据缓存
...
@@ -154,7 +161,7 @@ public class CommonserviceImpl {
...
@@ -154,7 +161,7 @@ public class CommonserviceImpl {
* @param instanceData 流程数据
* @param instanceData 流程数据
*/
*/
public
void
saveExecuteFlowData2Redis
(
String
instanceId
,
InstanceRuntimeData
instanceData
)
{
public
void
saveExecuteFlowData2Redis
(
String
instanceId
,
InstanceRuntimeData
instanceData
)
{
redissonClient
.
getBucket
(
buildJ
g
InstanceDataKey
(
instanceId
)).
set
(
instanceData
);
redissonClient
.
getBucket
(
buildJ
c
InstanceDataKey
(
instanceId
)).
set
(
instanceData
);
}
}
...
...
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 @
38ed946d
...
@@ -7,7 +7,6 @@ import com.alibaba.fastjson.JSON;
...
@@ -7,7 +7,6 @@ import com.alibaba.fastjson.JSON;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
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.yeejoin.amos.boot.biz.common.bo.ReginParams
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
...
@@ -40,6 +39,8 @@ import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
...
@@ -40,6 +39,8 @@ import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
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.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.springframework.beans.BeanUtils
;
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
;
...
@@ -51,8 +52,10 @@ import org.springframework.web.bind.annotation.RequestBody;
...
@@ -51,8 +52,10 @@ import org.springframework.web.bind.annotation.RequestBody;
import
org.typroject.tyboot.core.foundation.context.RequestContext
;
import
org.typroject.tyboot.core.foundation.context.RequestContext
;
import
org.typroject.tyboot.core.foundation.utils.ValidationUtil
;
import
org.typroject.tyboot.core.foundation.utils.ValidationUtil
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
org.typroject.tyboot.core.restful.exception.instance.BadRequest
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -72,8 +75,6 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -72,8 +75,6 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
private
JyjcInspectionApplicationEquipServiceImpl
applicationEquipService
;
private
JyjcInspectionApplicationEquipServiceImpl
applicationEquipService
;
@Autowired
@Autowired
TzsServiceFeignClient
tzsServiceFeignClient
;
TzsServiceFeignClient
tzsServiceFeignClient
;
@Autowired
private
WorkflowHelper
workflowHelper
;
@Autowired
@Autowired
EventPublisher
eventPublisher
;
EventPublisher
eventPublisher
;
...
@@ -97,7 +98,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -97,7 +98,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
@Autowired
@Autowired
WorkflowFeignService
workflowFeignService
;
WorkflowFeignService
workflowFeignService
;
@Autowired
@Autowired
Common
serviceImpl
commons
ervice
;
Common
ServiceImpl
commonS
ervice
;
@Autowired
@Autowired
CmWorkflowServiceImpl
cmWorkflowService
;
CmWorkflowServiceImpl
cmWorkflowService
;
@Value
(
"classpath:/json/bizTypeInfo.json"
)
@Value
(
"classpath:/json/bizTypeInfo.json"
)
...
@@ -108,6 +109,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -108,6 +109,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
@Autowired
@Autowired
JgFeignClient
jgFeignClient
;
JgFeignClient
jgFeignClient
;
@Autowired
@Autowired
private
RedisUtils
redisUtils
;
private
RedisUtils
redisUtils
;
...
@@ -123,6 +125,9 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -123,6 +125,9 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
@Autowired
@Autowired
JyjcOpeningApplicationServiceImpl
openingApplicationService
;
JyjcOpeningApplicationServiceImpl
openingApplicationService
;
@Autowired
RedissonClient
redissonClient
;
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
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
);
...
@@ -172,8 +177,10 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -172,8 +177,10 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
model
.
setNextExecuteIds
(
nextExcuteIds
);
model
.
setNextExecuteIds
(
nextExcuteIds
);
model
.
setNextTaskId
(
nextTaskId
);
model
.
setNextTaskId
(
nextTaskId
);
model
.
setNextTaskName
(
taskName
);
model
.
setNextTaskName
(
taskName
);
model
.
setPromoter
(
RequestContext
.
getExeUserId
());
model
.
setNextExecuteUserIds
(
nextUserIds
);
model
.
setNextExecuteUserIds
(
nextUserIds
);
model
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_SUBMITTED
.
getCode
()));
//6611 对应数据字典 检验流程状态 待受理
model
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_SUBMITTED
.
getCode
()));
//6611 对应数据字典 检验流程状态 待受理
commonService
.
saveExecuteFlowData2Redis
(
model
.
getInstanceId
(),
this
.
buildInstanceRuntimeData
(
model
));
}
else
if
(
model
.
getOperationType
().
equals
(
"1"
))
{
// 工作台暂存、详情保存逻辑
}
else
if
(
model
.
getOperationType
().
equals
(
"1"
))
{
// 工作台暂存、详情保存逻辑
String
[]
inspectionUnit
=
model
.
getInspectionUnitCode
().
split
(
"_"
);
String
[]
inspectionUnit
=
model
.
getInspectionUnitCode
().
split
(
"_"
);
if
(
inspectionUnit
.
length
==
2
)
{
if
(
inspectionUnit
.
length
==
2
)
{
...
@@ -268,7 +275,6 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -268,7 +275,6 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
applicationEquipService
.
saveBatch
(
equipInfos
);
applicationEquipService
.
saveBatch
(
equipInfos
);
// 附件保存
// 附件保存
List
<
String
>
enumNameList
=
DocumentEnum
.
getEnumNameList
();
List
<
String
>
enumNameList
=
DocumentEnum
.
getEnumNameList
();
List
<
JyjcInspectionApplicationAttachmentModel
>
attachmentModels
=
new
ArrayList
<>();
for
(
String
code
:
enumNameList
)
{
for
(
String
code
:
enumNameList
)
{
if
(
obj
.
containsKey
(
code
))
{
if
(
obj
.
containsKey
(
code
))
{
JyjcInspectionApplicationAttachment
attachments
=
new
JyjcInspectionApplicationAttachment
();
JyjcInspectionApplicationAttachment
attachments
=
new
JyjcInspectionApplicationAttachment
();
...
@@ -363,6 +369,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -363,6 +369,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
model
.
setNextExecuteIds
(
executorRoleIds
);
model
.
setNextExecuteIds
(
executorRoleIds
);
model
.
setNextExecuteUserIds
(
nextUserIds
);
model
.
setNextExecuteUserIds
(
nextUserIds
);
executeOneStep
(
model
,
taskName1
,
nextUserIds
);
executeOneStep
(
model
,
taskName1
,
nextUserIds
);
commonService
.
saveExecuteFlowData2Redis
(
model
.
getInstanceId
(),
this
.
buildInstanceRuntimeData
(
model
));
this
.
updateWithModel
(
model
);
this
.
updateWithModel
(
model
);
}
}
return
this
.
buildRedundancyField
(
model
);
return
this
.
buildRedundancyField
(
model
);
...
@@ -384,17 +391,6 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -384,17 +391,6 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
@Override
@Override
public
Boolean
deleteBatchData
(
List
<
Long
>
sequenceNbr
)
{
public
Boolean
deleteBatchData
(
List
<
Long
>
sequenceNbr
)
{
// List<JyjcInspectionApplication> jyjcInspectionApplications = this.getBaseMapper().selectBatchIds(sequenceNbr);
//// long count = jyjcInspectionApplications.stream().filter(e ->
//// e.getStatus().equals(String.valueOf(FlowStatusEnum.TO_BE_FINISHED.getCode()))
//// || e.getStatus().equals(String.valueOf(FlowStatusEnum.TO_SUBMITTED.getCode()))
//// ).count();
////
//// if (count > 0) {
//// throw new BadRequest("存在 已完成、待受理状态的报检单 不可删除!");
//// }
this
.
deleteBatchSeq
(
sequenceNbr
);
this
.
deleteBatchSeq
(
sequenceNbr
);
for
(
Long
seq
:
sequenceNbr
)
{
for
(
Long
seq
:
sequenceNbr
)
{
jyjcInspectionApplicationEquipService
.
getBaseMapper
().
deleteByApplicationSeq
(
seq
);
jyjcInspectionApplicationEquipService
.
getBaseMapper
().
deleteByApplicationSeq
(
seq
);
...
@@ -423,7 +419,6 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -423,7 +419,6 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
String
inspectionChargePerson
,
String
inspectionChargePerson
,
String
status
,
String
bizType
)
{
String
status
,
String
bizType
)
{
// return this.getBaseMapper().queryForDataList(page, applicationNo, inspectionClassify, applicationUnitCode, applicationUnitName, equipClassify, inspectionUnitCode, inspectionUnitName, applicationDate, acceptDate, inspectionChargePerson, status, bizType,roleIds);
return
this
.
getBaseMapper
().
queryForDataList
(
page
,
applicationNo
,
inspectionClassify
,
applicationUnitCode
,
applicationUnitName
,
equipClassify
,
inspectionUnitCode
,
inspectionUnitName
,
applicationDate
,
acceptDate
,
inspectionChargePerson
,
status
,
bizType
);
return
this
.
getBaseMapper
().
queryForDataList
(
page
,
applicationNo
,
inspectionClassify
,
applicationUnitCode
,
applicationUnitName
,
equipClassify
,
inspectionUnitCode
,
inspectionUnitName
,
applicationDate
,
acceptDate
,
inspectionChargePerson
,
status
,
bizType
);
}
}
...
@@ -544,73 +539,88 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -544,73 +539,88 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
*/
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
doReceive
(
Map
<
String
,
Object
>
params
)
{
public
void
doReceive
(
Map
<
String
,
Object
>
params
)
{
String
instanceId
=
params
.
get
(
"instanceId"
).
toString
();
Long
sequenceNbr
=
Long
.
parseLong
(
params
.
get
(
"sequenceNbr"
)
+
""
);
String
nextTaskId
=
params
.
get
(
"nextTaskId"
).
toString
();
LambdaQueryWrapper
<
JyjcInspectionApplication
>
lambda
=
new
QueryWrapper
<
JyjcInspectionApplication
>().
lambda
();
String
lockKey
=
CommonServiceImpl
.
buildJcExecuteLockKey
(
instanceId
);
lambda
.
eq
(
JyjcInspectionApplication:
:
getSequenceNbr
,
sequenceNbr
);
RLock
lock
=
redissonClient
.
getLock
(
lockKey
);
JyjcInspectionApplication
entity
=
this
.
getBaseMapper
().
selectOne
(
lambda
);
try
{
String
taskId
=
entity
.
getNextTaskId
();
boolean
isLocked
=
lock
.
tryLock
(
0
,
180
,
TimeUnit
.
SECONDS
);
//组装信息
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
TaskResultDTO
task
=
new
TaskResultDTO
();
if
(!
isLocked
)
{
task
.
setResultCode
(
"approvalStatus"
);
throw
new
BadRequest
(
"当前流程已经被执行!请重新打开页面查看并执行!"
);
task
.
setTaskId
(
taskId
);
}
task
.
setComment
(
params
.
getOrDefault
(
"comments"
,
""
).
toString
());
// 流程执行时,状态及权限校验
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
commonService
.
checkForExecuteFlow
(
nextTaskId
,
instanceId
);
map
.
put
(
"approvalStatus"
,
"0"
);
Long
sequenceNbr
=
Long
.
parseLong
(
params
.
get
(
"sequenceNbr"
)
+
""
);
task
.
setVariable
(
map
);
JyjcInspectionApplication
entity
=
this
.
getBaseMapper
().
selectById
(
sequenceNbr
);
//执行流程
//组装信息
task
.
setNextExecuteUserCompanyCode
(
entity
.
getInspectionUnitCode
());
TaskResultDTO
task
=
new
TaskResultDTO
();
cmWorkflowService
.
complete
(
taskId
,
task
);
task
.
setResultCode
(
"approvalStatus"
);
entity
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
()));
task
.
setTaskId
(
nextTaskId
);
JyjcInspectionApplicationModel
model
=
new
JyjcInspectionApplicationModel
();
task
.
setComment
(
params
.
getOrDefault
(
"comments"
,
""
).
toString
());
model
.
setStatusName
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
());
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
entity
.
setAcceptDate
(
new
Date
());
map
.
put
(
"approvalStatus"
,
"0"
);
entity
.
setInnerPersonCode
(
params
.
getOrDefault
(
"innerPersonCode"
,
""
).
toString
());
task
.
setVariable
(
map
);
String
processDescription
=
(
String
)
params
.
get
(
"comments"
);
//执行流程
if
(
StringUtils
.
isNotBlank
(
processDescription
))
{
task
.
setNextExecuteUserCompanyCode
(
entity
.
getInspectionUnitCode
());
entity
.
setProcessDescription
(
processDescription
);
cmWorkflowService
.
complete
(
nextTaskId
,
task
);
}
entity
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
()));
this
.
updateById
(
entity
);
JyjcInspectionApplicationModel
model
=
new
JyjcInspectionApplicationModel
();
BeanUtils
.
copyProperties
(
entity
,
model
);
model
.
setStatusName
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
());
updateTaskModel
(
model
);
entity
.
setAcceptDate
(
new
Date
());
// 执行接收业务
entity
.
setInnerPersonCode
(
params
.
getOrDefault
(
"innerPersonCode"
,
""
).
toString
());
JyjcInspectionApplicationModel
inspectionApplicationModel
=
this
.
queryBySeq
(
sequenceNbr
);
String
processDescription
=
(
String
)
params
.
get
(
"comments"
);
if
(
StringUtils
.
isNotBlank
(
processDescription
))
{
List
<
JyjcInspectionApplicationEquipModel
>
applicationEquipModels
=
applicationEquipService
.
listApplicationEquipByApplicationSeq
(
sequenceNbr
);
entity
.
setProcessDescription
(
processDescription
);
if
(
inspectionApplicationModel
==
null
||
ValidationUtil
.
isEmpty
(
applicationEquipModels
))
{
}
log
.
warn
(
"JyjcInspectionApplicationModel Not Found!"
);
entity
.
setNextExecuteUserIds
(
""
);
return
;
entity
.
setPromoter
(
""
);
}
entity
.
setNextExecuteIds
(
""
);
List
<
JyjcInspectionResult
>
resultModels
=
new
ArrayList
<>();
entity
.
setNextTaskId
(
""
);
List
<
String
>
codes
=
tzsServiceFeignClient
.
applicationFormCode
(
ApplicationFormTypeEnum
.
JG
.
getCode
(),
applicationEquipModels
.
size
()).
getResult
();
this
.
updateById
(
entity
);
BeanUtils
.
copyProperties
(
entity
,
model
);
for
(
int
i
=
0
;
i
<
applicationEquipModels
.
size
();
i
++)
{
updateTaskModel
(
model
);
JyjcInspectionResult
resultModel
=
new
JyjcInspectionResult
();
List
<
JyjcInspectionApplicationEquipModel
>
applicationEquipModels
=
applicationEquipService
.
listApplicationEquipByApplicationSeq
(
sequenceNbr
);
resultModel
.
setInspectionUnitCode
(
inspectionApplicationModel
.
getInspectionUnitCode
());
List
<
JyjcInspectionResult
>
resultModels
=
new
ArrayList
<>();
resultModel
.
setInspectionUnitName
(
inspectionApplicationModel
.
getInspectionUnitName
());
List
<
String
>
codes
=
tzsServiceFeignClient
.
applicationFormCode
(
ApplicationFormTypeEnum
.
JG
.
getCode
(),
applicationEquipModels
.
size
()).
getResult
();
resultModel
.
setApplicationNo
(
inspectionApplicationModel
.
getApplicationNo
());
resultModel
.
setApplicationUnitCode
(
inspectionApplicationModel
.
getApplicationUnitCode
());
for
(
int
i
=
0
;
i
<
applicationEquipModels
.
size
();
i
++)
{
resultModel
.
setApplicationUnitName
(
inspectionApplicationModel
.
getApplicationUnitName
());
JyjcInspectionResult
resultModel
=
new
JyjcInspectionResult
();
resultModel
.
setResultStatus
(
ResultStatusEnum
.
NO_RESULT
.
getCode
());
resultModel
.
setInspectionUnitCode
(
model
.
getInspectionUnitCode
());
resultModel
.
setApplicationDate
(
inspectionApplicationModel
.
getApplicationDate
());
resultModel
.
setInspectionUnitName
(
model
.
getInspectionUnitName
());
resultModel
.
setApplicationNo
(
model
.
getApplicationNo
());
resultModel
.
setInspectionType
(
inspectionApplicationModel
.
getInspectionType
());
resultModel
.
setApplicationUnitCode
(
model
.
getApplicationUnitCode
());
resultModel
.
setInspectionTypeName
(
this
.
getDictNameByCode
(
inspectionApplicationModel
.
getInspectionType
()));
resultModel
.
setApplicationUnitName
(
model
.
getApplicationUnitName
());
// 解析设备
resultModel
.
setResultStatus
(
ResultStatusEnum
.
NO_RESULT
.
getCode
());
resultModel
.
setBizType
(
inspectionApplicationModel
.
getBizType
());
resultModel
.
setApplicationDate
(
model
.
getApplicationDate
());
resultModel
.
setResultNo
(
codes
.
get
(
i
));
//设备唯一标识
resultModel
.
setInspectionType
(
model
.
getInspectionType
());
resultModel
.
setEquipUnicode
(
applicationEquipModels
.
get
(
i
).
getEquipUnicode
());
resultModel
.
setInspectionTypeName
(
this
.
getDictNameByCode
(
model
.
getInspectionType
()));
resultModel
.
setSupervisoryCode
(
applicationEquipModels
.
get
(
i
).
getSupervisoryCode
());
// 解析设备
resultModel
.
setEquDefine
(
applicationEquipModels
.
get
(
i
).
getEquDefine
());
resultModel
.
setBizType
(
model
.
getBizType
());
resultModel
.
setEquCategory
(
applicationEquipModels
.
get
(
i
).
getEquCategory
());
resultModel
.
setResultNo
(
codes
.
get
(
i
));
resultModel
.
setEquList
(
applicationEquipModels
.
get
(
i
).
getEquList
());
//设备唯一标识
resultModel
.
setIsExistNc
(
false
);
resultModel
.
setEquipUnicode
(
applicationEquipModels
.
get
(
i
).
getEquipUnicode
());
this
.
setResultTypeByBizType
(
resultModel
,
inspectionApplicationModel
.
getBizType
());
resultModel
.
setSupervisoryCode
(
applicationEquipModels
.
get
(
i
).
getSupervisoryCode
());
resultModels
.
add
(
resultModel
);
resultModel
.
setEquDefine
(
applicationEquipModels
.
get
(
i
).
getEquDefine
());
resultModel
.
setEquCategory
(
applicationEquipModels
.
get
(
i
).
getEquCategory
());
resultModel
.
setEquList
(
applicationEquipModels
.
get
(
i
).
getEquList
());
resultModel
.
setIsExistNc
(
false
);
this
.
setResultTypeByBizType
(
resultModel
,
model
.
getBizType
());
resultModels
.
add
(
resultModel
);
}
inspectionResultService
.
saveOrUpdateBatch
(
resultModels
);
// 报检信息推送
this
.
pushInspectionApplication
(
model
);
// 更新流程中的流程数据
commonService
.
saveExecuteFlowData2Redis
(
model
.
getInstanceId
(),
this
.
buildInstanceRuntimeData
(
entity
));
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
lock
.
isHeldByCurrentThread
())
{
lock
.
unlock
();
}
}
}
inspectionResultService
.
saveOrUpdateBatch
(
resultModels
);
this
.
pushInspectionApplication
(
inspectionApplicationModel
);
}
}
private
void
setResultTypeByBizType
(
JyjcInspectionResult
resultModel
,
String
bizType
)
{
private
void
setResultTypeByBizType
(
JyjcInspectionResult
resultModel
,
String
bizType
)
{
...
@@ -665,59 +675,75 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -665,59 +675,75 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
*/
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Boolean
doReject
(
Map
<
String
,
Object
>
params
)
{
public
Boolean
doReject
(
Map
<
String
,
Object
>
params
)
{
String
instanceId
=
params
.
get
(
"instanceId"
).
toString
();
String
nextTaskId
=
params
.
get
(
"nextTaskId"
).
toString
();
String
lockKey
=
CommonServiceImpl
.
buildJcExecuteLockKey
(
instanceId
);
RLock
lock
=
redissonClient
.
getLock
(
lockKey
);
try
{
boolean
isLocked
=
lock
.
tryLock
(
0
,
180
,
TimeUnit
.
SECONDS
);
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
if
(!
isLocked
)
{
throw
new
BadRequest
(
"当前流程已经被执行!请重新打开页面查看并执行!"
);
}
// 流程执行时,状态及权限校验
commonService
.
checkForExecuteFlow
(
nextTaskId
,
instanceId
);
Long
sequenceNbr
=
Long
.
parseLong
(
params
.
get
(
"sequenceNbr"
)
+
""
);
JyjcInspectionApplication
entity
=
this
.
getBaseMapper
().
selectById
(
sequenceNbr
);
ArrayList
<
String
>
roleListAll
=
new
ArrayList
<>();
ArrayList
<
String
>
roleList
=
new
ArrayList
<>();
String
taskId
=
entity
.
getNextTaskId
();
//组装信息
TaskResultDTO
task
=
new
TaskResultDTO
();
task
.
setResultCode
(
"approvalStatus"
);
task
.
setTaskId
(
taskId
);
task
.
setComment
(
params
.
getOrDefault
(
"comments"
,
""
).
toString
());
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"approvalStatus"
,
"1"
);
task
.
setVariable
(
map
);
//执行流程
task
.
setNextExecuteUserCompanyCode
(
entity
.
getInspectionUnitCode
());
ProcessTaskDTO
processTaskDTO
=
cmWorkflowService
.
reject
(
taskId
,
task
);
String
taskName1
=
""
;
this
.
buildRoleList
(
Collections
.
singletonList
(
processTaskDTO
),
roleList
,
roleListAll
);
List
<
WorkflowResultDto
>
workflowResultDtos
=
taskModelService
.
buildWorkFlowInfo
(
Collections
.
singletonList
(
processTaskDTO
));
Long
sequenceNbr
=
Long
.
parseLong
(
params
.
get
(
"sequenceNbr"
)
+
""
);
entity
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
REJECTED
.
getCode
()));
LambdaQueryWrapper
<
JyjcInspectionApplication
>
lambda
=
new
QueryWrapper
<
JyjcInspectionApplication
>().
lambda
();
JyjcInspectionApplicationModel
model
=
new
JyjcInspectionApplicationModel
();
lambda
.
eq
(
JyjcInspectionApplication:
:
getSequenceNbr
,
sequenceNbr
);
BeanUtils
.
copyProperties
(
entity
,
model
);
JyjcInspectionApplication
entity
=
this
.
getBaseMapper
().
selectOne
(
lambda
);
model
.
setStatusName
(
FlowStatusEnum
.
REJECTED
.
getName
());
ArrayList
<
String
>
roleListAll
=
new
ArrayList
<>();
String
processDescription
=
(
String
)
params
.
get
(
"comments"
);
ArrayList
<
String
>
roleListNext
=
new
ArrayList
<>();
if
(
StringUtils
.
isNotBlank
(
processDescription
))
{
ArrayList
<
String
>
roleList
=
new
ArrayList
<>();
entity
.
setProcessDescription
(
processDescription
);
String
taskId
=
entity
.
getNextTaskId
();
}
//组装信息
String
nextUserIds
=
workflowResultDtos
.
get
(
0
).
getNextExecutorUserIds
();
TaskResultDTO
task
=
new
TaskResultDTO
();
String
executorRoleIds
=
workflowResultDtos
.
get
(
0
).
getExecutorRoleIds
();
task
.
setResultCode
(
"approvalStatus"
);
if
(
processTaskDTO
!=
null
&&
processTaskDTO
.
getNextTask
()
!=
null
&&
processTaskDTO
.
getNextTask
().
size
()
>
0
)
{
task
.
setTaskId
(
taskId
);
taskName1
=
processTaskDTO
.
getNextTask
().
get
(
0
).
getName
();
task
.
setComment
(
params
.
getOrDefault
(
"comments"
,
""
).
toString
());
nextTaskId
=
processTaskDTO
.
getNextTask
().
get
(
0
).
getId
();
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
}
map
.
put
(
"approvalStatus"
,
"1"
);
model
.
setNextExecuteIds
(
String
.
join
(
","
,
roleList
));
task
.
setVariable
(
map
);
if
(!
org
.
springframework
.
util
.
ObjectUtils
.
isEmpty
(
model
.
getWorkflowRole
()))
{
//执行流程
model
.
setWorkflowRole
(
model
.
getWorkflowRole
()
+
","
+
String
.
join
(
","
,
roleList
));
task
.
setNextExecuteUserCompanyCode
(
entity
.
getInspectionUnitCode
());
}
else
{
ProcessTaskDTO
processTaskDTO
=
cmWorkflowService
.
reject
(
taskId
,
task
);
model
.
setWorkflowRole
(
String
.
join
(
","
,
roleList
));
String
taskName1
=
""
;
}
String
nextTaskId
=
""
;
model
.
setNextTaskId
(
nextTaskId
);
this
.
buildRoleList
(
Collections
.
singletonList
(
processTaskDTO
),
roleList
,
roleListAll
);
model
.
setPromoter
(
RequestContext
.
getExeUserId
());
List
<
WorkflowResultDto
>
workflowResultDtos
=
taskModelService
.
buildWorkFlowInfo
(
Collections
.
singletonList
(
processTaskDTO
));
model
.
setNextTaskName
(
taskName1
);
model
.
setNextExecuteIds
(
executorRoleIds
);
entity
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
REJECTED
.
getCode
()));
model
.
setNextExecuteUserIds
(
nextUserIds
);
JyjcInspectionApplicationModel
model
=
new
JyjcInspectionApplicationModel
();
executeOneStep
(
model
,
taskName1
,
nextUserIds
);
BeanUtils
.
copyProperties
(
entity
,
model
);
BeanUtils
.
copyProperties
(
model
,
entity
);
model
.
setStatusName
(
FlowStatusEnum
.
REJECTED
.
getName
());
this
.
updateById
(
entity
);
String
processDescription
=
(
String
)
params
.
get
(
"comments"
);
// 更新流程中的流程数据
if
(
StringUtils
.
isNotBlank
(
processDescription
))
{
commonService
.
saveExecuteFlowData2Redis
(
model
.
getInstanceId
(),
this
.
buildInstanceRuntimeData
(
entity
));
entity
.
setProcessDescription
(
processDescription
);
}
catch
(
InterruptedException
e
)
{
}
e
.
printStackTrace
();
String
nextUserIds
=
workflowResultDtos
.
get
(
0
).
getNextExecutorUserIds
();
}
finally
{
String
executorRoleIds
=
workflowResultDtos
.
get
(
0
).
getExecutorRoleIds
();
if
(
lock
.
isHeldByCurrentThread
())
{
if
(
processTaskDTO
!=
null
&&
processTaskDTO
.
getNextTask
()
!=
null
&&
processTaskDTO
.
getNextTask
().
size
()
>
0
)
{
lock
.
unlock
();
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
()))
{
model
.
setWorkflowRole
(
model
.
getWorkflowRole
()
+
","
+
String
.
join
(
","
,
roleList
));
}
else
{
model
.
setWorkflowRole
(
String
.
join
(
","
,
roleList
));
}
}
model
.
setNextTaskId
(
nextTaskId
);
model
.
setPromoter
(
RequestContext
.
getExeUserId
());
model
.
setNextTaskName
(
taskName1
);
model
.
setNextExecuteIds
(
executorRoleIds
);
model
.
setNextExecuteUserIds
(
nextUserIds
);
executeOneStep
(
model
,
taskName1
,
nextUserIds
);
BeanUtils
.
copyProperties
(
model
,
entity
);
this
.
updateById
(
entity
);
return
true
;
return
true
;
}
}
...
@@ -725,100 +751,79 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -725,100 +751,79 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
/**
/**
* 撤回流程办理单
* 撤回流程办理单
*/
*/
public
Boolean
doRollback
(
String
sequenceNbr
)
{
public
Boolean
doRollback
(
String
sequenceNbr
,
String
instanceId
,
String
nextTaskId
)
{
JyjcInspectionApplicationModel
inspectionApplicationModel
=
this
.
queryBySeq
(
Long
.
valueOf
(
sequenceNbr
));
String
lockKey
=
CommonServiceImpl
.
buildJcExecuteLockKey
(
instanceId
);
if
(
inspectionApplicationModel
==
null
)
{
RLock
lock
=
redissonClient
.
getLock
(
lockKey
);
log
.
warn
(
"JyjcInspectionApplicationModel Not Found!sequenceNbr => "
+
sequenceNbr
);
try
{
return
false
;
boolean
isLocked
=
lock
.
tryLock
(
0
,
180
,
TimeUnit
.
SECONDS
);
}
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
String
taskCode
=
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
();
if
(!
isLocked
)
{
String
[]
taskName
=
new
String
[]{
"流程结束"
};
throw
new
BadRequest
(
"当前流程已经被执行!请重新打开页面查看并执行!"
);
List
<
String
>
roleListNext
=
new
ArrayList
<>();
}
List
<
String
>
roleListAll
=
new
ArrayList
<>();
// 流程执行时,状态及权限校验
ProcessTaskDTO
processTaskDTO
=
cmWorkflowService
.
rollBack
(
inspectionApplicationModel
.
getProcessInstanceId
());
commonService
.
checkForRevocationFlow
(
nextTaskId
,
instanceId
);
String
nextTaskId
=
processTaskDTO
.
getNextTask
().
get
(
0
).
getId
();
JyjcInspectionApplicationModel
inspectionApplicationModel
=
this
.
queryBySeq
(
Long
.
valueOf
(
sequenceNbr
));
this
.
buildRoleList
(
Collections
.
singletonList
(
processTaskDTO
),
roleListNext
,
roleListAll
);
if
(
inspectionApplicationModel
==
null
)
{
List
<
WorkflowResultDto
>
workflowResultDtos
=
taskModelService
.
buildWorkFlowInfo
(
Collections
.
singletonList
(
processTaskDTO
));
log
.
warn
(
"JyjcInspectionApplicationModel Not Found!sequenceNbr => "
+
sequenceNbr
);
if
(!
org
.
springframework
.
util
.
ObjectUtils
.
isEmpty
(
inspectionApplicationModel
.
getWorkflowRole
()))
{
return
false
;
inspectionApplicationModel
.
setWorkflowRole
(
inspectionApplicationModel
.
getWorkflowRole
()
+
","
+
roleListAll
);
}
}
else
{
List
<
String
>
roleListNext
=
new
ArrayList
<>();
inspectionApplicationModel
.
setWorkflowRole
(
inspectionApplicationModel
.
getWorkflowRole
());
List
<
String
>
roleListAll
=
new
ArrayList
<>();
ProcessTaskDTO
processTaskDTO
=
cmWorkflowService
.
rollBack
(
inspectionApplicationModel
.
getProcessInstanceId
());
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
.
getWorkflowRole
());
}
inspectionApplicationModel
.
setNextTaskId
(
processTaskDTO
.
getNextTask
().
get
(
0
).
getId
());
inspectionApplicationModel
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
ROLLBACK
.
getCode
()));
inspectionApplicationModel
.
setStatusName
(
FlowStatusEnum
.
ROLLBACK
.
getName
());
inspectionApplicationModel
.
setPromoter
(
""
);
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"
,
BizTypeEnum
.
getNumByCode
(
inspectionApplicationModel
.
getBizType
()));
jsonObject
.
put
(
"flowStatus"
,
FlowStatusEnum
.
ROLLBACK
.
getCode
());
jsonObject
.
put
(
"flowStatusLabel"
,
FlowStatusEnum
.
ROLLBACK
.
getName
());
taskModelService
.
rollbackTask
(
inspectionApplicationModel
.
getProcessInstanceId
(),
jsonObject
);
// 缓存下一个任务id,再任务进行时,用来校验数据,不再进行数据库查询
commonService
.
saveExecuteFlowData2Redis
(
instanceId
,
this
.
buildInstanceRuntimeData
(
jyjcInspectionApplication
));
return
true
;
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
lock
.
isHeldByCurrentThread
())
{
lock
.
unlock
();
}
}
}
// 待调整
return
Boolean
.
FALSE
;
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"
,
BizTypeEnum
.
getNumByCode
(
inspectionApplicationModel
.
getBizType
()));
jsonObject
.
put
(
"flowStatus"
,
FlowStatusEnum
.
ROLLBACK
.
getCode
());
jsonObject
.
put
(
"flowStatusLabel"
,
FlowStatusEnum
.
ROLLBACK
.
getName
());
taskModelService
.
rollbackTask
(
inspectionApplicationModel
.
getProcessInstanceId
(),
jsonObject
);
return
true
;
}
}
public
void
updateModelByInstanceId
(
Long
sequenceNbr
,
String
instanceId
,
Map
<
String
,
Object
>
params
,
Boolean
rollBack
)
{
private
InstanceRuntimeData
buildInstanceRuntimeData
(
JyjcInspectionApplication
jyjcInspectionApplication
)
{
ReginParams
reginParams
=
JSONObject
.
parseObject
(
redisUtils
.
get
(
RedisKey
.
buildReginKey
(
RequestContext
.
getExeUserId
(),
RequestContext
.
getToken
())).
toString
(),
ReginParams
.
class
);
return
InstanceRuntimeData
.
builder
()
LambdaQueryWrapper
<
JyjcInspectionApplication
>
lambda
=
new
QueryWrapper
<
JyjcInspectionApplication
>().
lambda
();
.
nextExecuteUserIds
(
jyjcInspectionApplication
.
getNextExecuteUserIds
())
lambda
.
eq
(
JyjcInspectionApplication:
:
getSequenceNbr
,
sequenceNbr
);
.
promoter
(
jyjcInspectionApplication
.
getPromoter
())
JyjcInspectionApplication
entity
=
this
.
getBaseMapper
().
selectOne
(
lambda
);
.
nextTaskId
(
jyjcInspectionApplication
.
getNextTaskId
())
if
(
entity
==
null
)
{
.
build
();
return
;
}
}
String
status
=
(
String
)
params
.
get
(
"status"
);
List
<
String
>
persons
=
JSONArray
.
parseArray
(
JSON
.
toJSONString
(
params
.
get
(
"inspectionChargePerson"
)),
String
.
class
);
String
inspectionChargePerson
=
persons
==
null
?
""
:
String
.
join
(
","
,
persons
);
if
(
StringUtils
.
isNotBlank
(
inspectionChargePerson
))
{
entity
.
setInspectionChargePerson
(
inspectionChargePerson
);
}
String
processDescription
=
(
String
)
params
.
get
(
"comments"
);
if
(
StringUtils
.
isNotBlank
(
processDescription
))
{
entity
.
setProcessDescription
(
processDescription
);
}
String
inspectionChargePhone
=
(
String
)
params
.
get
(
"inspectionChargePhone"
);
if
(
StringUtils
.
isNotBlank
(
inspectionChargePhone
))
{
entity
.
setInspectionChargePhone
(
inspectionChargePhone
);
}
Map
<
String
,
Object
>
nextNodeInfo
=
workflowHelper
.
getNextWorkflowNode
(
instanceId
);
String
role
=
(
String
)
nextNodeInfo
.
get
(
"role"
);
entity
.
setNextExecuteIds
(
role
);
entity
.
setPromoter
(
reginParams
.
getUserModel
().
getUserId
());
if
(!
org
.
springframework
.
util
.
ObjectUtils
.
isEmpty
(
entity
.
getWorkflowRole
()))
{
entity
.
setWorkflowRole
(
entity
.
getWorkflowRole
()
+
","
+
role
);
}
else
{
entity
.
setWorkflowRole
(
role
);
}
entity
.
setStatus
(
status
);
//此处自己撤销也赋予了办理日期 存在问题 与驳回 通过区分处理
if
(
rollBack
)
{
this
.
getBaseMapper
().
updatePromoter
(
entity
.
getSequenceNbr
());
}
//逻辑变更为 通过后才对办理时间赋值
if
(
status
.
equals
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
())))
{
entity
.
setAcceptDate
(
new
Date
());
entity
.
setInnerPersonCode
(
params
.
getOrDefault
(
"innerPersonCode"
,
""
).
toString
());
}
this
.
updateById
(
entity
);
private
InstanceRuntimeData
buildInstanceRuntimeData
(
JyjcInspectionApplicationModel
jyjcInspectionApplication
)
{
return
InstanceRuntimeData
.
builder
()
.
nextExecuteUserIds
(
jyjcInspectionApplication
.
getNextExecuteUserIds
())
.
promoter
(
jyjcInspectionApplication
.
getPromoter
())
.
nextTaskId
(
jyjcInspectionApplication
.
getNextTaskId
())
.
build
();
}
}
private
void
buildRoleList
(
List
<
ProcessTaskDTO
>
processTasks
,
List
<
String
>
roleListNext
,
List
<
String
>
roleListAll
)
{
private
void
buildRoleList
(
List
<
ProcessTaskDTO
>
processTasks
,
List
<
String
>
roleListNext
,
List
<
String
>
roleListAll
)
{
processTasks
.
forEach
(
p
->
{
processTasks
.
forEach
(
p
->
{
p
.
getNextCandidateGroups
().
values
().
forEach
(
e
->
{
p
.
getNextCandidateGroups
().
values
().
forEach
(
e
->
{
...
@@ -906,6 +911,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -906,6 +911,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
private
TaskV2Model
updateTaskModel
(
JyjcInspectionApplicationModel
model
)
{
private
TaskV2Model
updateTaskModel
(
JyjcInspectionApplicationModel
model
)
{
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
this
.
cleanNoUsedData
(
model
);
params
.
put
(
"relationId"
,
model
.
getProcessInstanceId
());
params
.
put
(
"relationId"
,
model
.
getProcessInstanceId
());
params
.
put
(
"taskStatus"
,
model
.
getStatus
());
params
.
put
(
"taskStatus"
,
model
.
getStatus
());
params
.
put
(
"taskStatusLabel"
,
model
.
getStatusName
());
params
.
put
(
"taskStatusLabel"
,
model
.
getStatusName
());
...
@@ -914,4 +920,28 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
...
@@ -914,4 +920,28 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
params
.
put
(
"model"
,
model
);
params
.
put
(
"model"
,
model
);
return
taskModelService
.
updateTaskModel
(
params
);
return
taskModelService
.
updateTaskModel
(
params
);
}
}
/**
* 清楚无用数据防止url过长
*
* @param model
*/
private
void
cleanNoUsedData
(
JyjcInspectionApplicationModel
model
)
{
// todo 预留
}
/**
* 缓存当前正在流程中的实例的流程数据
*/
public
void
initFlowData2Redis
()
{
LambdaQueryWrapper
<
JyjcInspectionApplication
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
ne
(
JyjcInspectionApplication:
:
getStatus
,
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
());
queryWrapper
.
ne
(
JyjcInspectionApplication:
:
getStatus
,
FlowStatusEnum
.
TO_BE_DISCARD
.
getCode
());
queryWrapper
.
isNotNull
(
JyjcInspectionApplication:
:
getProcessInstanceId
);
queryWrapper
.
select
(
JyjcInspectionApplication:
:
getProcessInstanceId
,
JyjcInspectionApplication:
:
getNextTaskId
,
JyjcInspectionApplication:
:
getPromoter
,
JyjcInspectionApplication:
:
getNextExecuteUserIds
);
List
<
JyjcInspectionApplication
>
jyjcInspectionApplicationsInFlowing
=
this
.
list
(
queryWrapper
);
jyjcInspectionApplicationsInFlowing
.
forEach
(
inspectionApplication
->
{
commonService
.
saveExecuteFlowData2Redis
(
inspectionApplication
.
getProcessInstanceId
(),
this
.
buildInstanceRuntimeData
(
inspectionApplication
));
});
}
}
}
\ 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/impl/JyjcInspectionResultServiceImpl.java
View file @
38ed946d
...
@@ -101,7 +101,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
...
@@ -101,7 +101,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
TzBaseEnterpriseInfoMapper
tzBaseEnterpriseInfoMapper
;
TzBaseEnterpriseInfoMapper
tzBaseEnterpriseInfoMapper
;
@Autowired
@Autowired
Common
s
erviceImpl
commonService
;
Common
S
erviceImpl
commonService
;
@Autowired
@Autowired
TzsUserInfoMapper
tzsUserInfoMapper
;
TzsUserInfoMapper
tzsUserInfoMapper
;
...
...
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/JyjcOpeningApplicationServiceImpl.java
View file @
38ed946d
...
@@ -16,14 +16,12 @@ import com.yeejoin.amos.boot.biz.common.controller.BaseController;
...
@@ -16,14 +16,12 @@ import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import
com.yeejoin.amos.boot.biz.common.dao.mapper.DataDictionaryMapper
;
import
com.yeejoin.amos.boot.biz.common.dao.mapper.DataDictionaryMapper
;
import
com.yeejoin.amos.boot.biz.common.entity.BaseEntity
;
import
com.yeejoin.amos.boot.biz.common.entity.BaseEntity
;
import
com.yeejoin.amos.boot.biz.common.entity.DataDictionary
;
import
com.yeejoin.amos.boot.biz.common.entity.DataDictionary
;
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
;
import
com.yeejoin.amos.boot.module.common.api.dto.AttachmentDto
;
import
com.yeejoin.amos.boot.module.common.api.dto.AttachmentDto
;
import
com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcOpeningApplication
;
import
com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcOpeningApplication
;
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.BusinessTypeEnum
;
import
com.yeejoin.amos.boot.module.jyjc.api.enums.OpenBizTypeEnum
;
import
com.yeejoin.amos.boot.module.jyjc.api.enums.OpenBizTypeEnum
;
import
com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcBaseMapper
;
import
com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcOpeningApplicationMapper
;
import
com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcOpeningApplicationMapper
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.*
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.*
;
import
com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcOpeningApplicationService
;
import
com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcOpeningApplicationService
;
...
@@ -53,6 +51,8 @@ import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
...
@@ -53,6 +51,8 @@ import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
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.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.springframework.beans.BeanUtils
;
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
;
...
@@ -63,8 +63,8 @@ import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
...
@@ -63,8 +63,8 @@ import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
org.typroject.tyboot.core.restful.exception.instance.BadRequest
;
import
org.typroject.tyboot.core.restful.exception.instance.BadRequest
;
import
javax.annotation.Resource
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.function.Function
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -80,8 +80,6 @@ import java.util.stream.Collectors;
...
@@ -80,8 +80,6 @@ import java.util.stream.Collectors;
public
class
JyjcOpeningApplicationServiceImpl
extends
BaseService
<
JyjcOpeningApplicationModel
,
JyjcOpeningApplication
,
JyjcOpeningApplicationMapper
>
implements
IJyjcOpeningApplicationService
{
public
class
JyjcOpeningApplicationServiceImpl
extends
BaseService
<
JyjcOpeningApplicationModel
,
JyjcOpeningApplication
,
JyjcOpeningApplicationMapper
>
implements
IJyjcOpeningApplicationService
{
@Autowired
@Autowired
CommonserviceImpl
commonserviceImpl
;
@Autowired
private
TzsServiceFeignClient
tzsServiceFeignClient
;
private
TzsServiceFeignClient
tzsServiceFeignClient
;
@Autowired
@Autowired
JyjcOpeningApplicationMapper
jyjcOpeningApplicationMapper
;
JyjcOpeningApplicationMapper
jyjcOpeningApplicationMapper
;
...
@@ -118,13 +116,13 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
...
@@ -118,13 +116,13 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
private
TzsUserInfoMapper
userInfoMapper
;
private
TzsUserInfoMapper
userInfoMapper
;
@Autowired
@Autowired
Common
serviceImpl
commons
ervice
;
Common
ServiceImpl
commonS
ervice
;
@Autowired
@Autowired
CmWorkflowServiceImpl
cmWorkflowService
;
CmWorkflowServiceImpl
cmWorkflowService
;
@Autowired
@Autowired
TaskModelServiceImpl
commonServiceImpl
;
TaskModelServiceImpl
taskModelService
;
@Autowired
@Autowired
DataDictionaryMapper
dataDictionaryMapper
;
DataDictionaryMapper
dataDictionaryMapper
;
...
@@ -132,6 +130,9 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
...
@@ -132,6 +130,9 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
@Autowired
@Autowired
RuleActionHandler
ruleActionHandler
;
RuleActionHandler
ruleActionHandler
;
@Autowired
RedissonClient
redissonClient
;
private
static
Map
<
String
,
DictionarieValueModel
>
permissionLevelMap
;
private
static
Map
<
String
,
DictionarieValueModel
>
permissionLevelMap
;
private
static
List
<
DictionarieValueModel
>
permissionItemList
;
private
static
List
<
DictionarieValueModel
>
permissionItemList
;
...
@@ -148,99 +149,101 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
...
@@ -148,99 +149,101 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
*/
*/
private
final
static
String
ZZXM_JYJC_DICT_KEY
=
"ZZXM_JYJC_ALL"
;
private
final
static
String
ZZXM_JYJC_DICT_KEY
=
"ZZXM_JYJC_ALL"
;
@Transactional
(
rollbackFor
=
{
Exception
.
class
,
BaseException
.
class
})
@Transactional
(
rollbackFor
=
{
Exception
.
class
,
BaseException
.
class
})
public
JyjcOpeningApplicationModel
saveOrUpdateModel
(
JyjcOpeningApplicationModel
model
,
Boolean
enableStartFlow
)
{
public
JyjcOpeningApplicationModel
saveOrUpdate
(
JyjcOpeningApplicationModel
model
)
{
boolean
isUpdate
=
false
;
String
instanceId
=
null
;
JyjcOpeningApplication
entity
=
null
;
if
(
model
.
getSequenceNbr
()
!=
null
)
{
if
(
model
.
getSequenceNbr
()
!=
null
)
{
entity
=
jyjcOpeningApplicationMapper
.
selectById
(
model
.
getSequenceNbr
());
// 编辑逻辑
if
(
entity
!=
null
)
{
return
this
.
updateWithModel
(
model
);
instanceId
=
entity
.
getWorkflowProstanceId
();
}
else
{
isUpdate
=
true
;
// 工作台暂存(新增)逻辑
}
// 1.创建开通申请
}
List
<
String
>
codes
=
tzsServiceFeignClient
.
applicationFormCode
(
ApplicationFormTypeEnum
.
JY
.
getCode
(),
1
).
getResult
();
List
<
String
>
codes
=
tzsServiceFeignClient
.
applicationFormCode
(
ApplicationFormTypeEnum
.
JY
.
getCode
(),
1
).
getResult
();
model
.
setApplicationSeq
(
codes
.
get
(
0
));
model
.
setApplicationSeq
(
codes
.
get
(
0
));
CompanyBo
companyBo
=
commonService
.
getReginParamsOfCurrentUser
().
getCompany
();
ReginParams
reginParams
=
JSONObject
.
parseObject
(
redisUtils
.
get
(
RedisKey
.
buildReginKey
(
RequestContext
.
getExeUserId
(),
RequestContext
.
getToken
())).
toString
(),
ReginParams
.
class
);
model
.
setPromoter
(
reginParams
.
getUserModel
().
getUserId
());
if
(!
isUpdate
)
{
CompanyBo
companyBo
=
commonserviceImpl
.
getReginParamsOfCurrentUser
().
getCompany
();
model
.
setUnitCode
(
companyBo
.
getCompanyCode
());
model
.
setUnitCode
(
companyBo
.
getCompanyCode
());
model
.
setUnitCodeName
(
companyBo
.
getCompanyName
());
model
.
setUnitCodeName
(
companyBo
.
getCompanyName
());
model
.
setCreateUserId
(
reginParams
.
getUserModel
().
getUserId
());
model
.
setCreateUserId
(
RequestContext
.
getExeUserId
());
model
.
setStatus
(
FlowStatusEnum
.
TO_BE_SUBMITTED
.
getCode
()
+
""
);
model
.
setStatusName
(
FlowStatusEnum
.
TO_BE_SUBMITTED
.
getName
());
this
.
createWithModel
(
model
);
this
.
createWithModel
(
model
);
// 2.创建待办
createDraftTask
(
model
);
}
}
if
(
enableStartFlow
)
{
model
.
setStatusName
(
FlowStatusEnum
.
getNameByType
(
Long
.
parseLong
((
model
.
getStatus
()))));
model
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_PROCESSED
.
getCode
()));
return
this
.
updateWithModel
(
model
);
model
.
setApplyTime
(
new
Date
());
}
if
(
StringUtils
.
isBlank
(
instanceId
))
{
// 未开启过工作流则进行开启 startProcess
ActWorkflowBatchDTO
actWorkflowBatchDTO
=
new
ActWorkflowBatchDTO
();
ActWorkflowStartDTO
dto
=
new
ActWorkflowStartDTO
();
ArrayList
<
ActWorkflowStartDTO
>
list
=
new
ArrayList
<>();
dto
.
setProcessDefinitionKey
(
processDefinitionKey
);
dto
.
setBusinessKey
(
"1"
);
dto
.
setCompleteFirstTask
(
Boolean
.
TRUE
);
// 接受机构
list
.
add
(
dto
);
actWorkflowBatchDTO
.
setProcess
(
list
);
List
<
ProcessTaskDTO
>
processTaskDTOS
=
cmWorkflowService
.
startBatch
(
actWorkflowBatchDTO
);
List
<
WorkflowResultDto
>
resultDto
=
commonServiceImpl
.
buildWorkFlowInfo
(
processTaskDTOS
);
if
(!
ObjectUtils
.
isEmpty
(
resultDto
)
&&
!
ObjectUtils
.
isEmpty
(
resultDto
.
get
(
0
)))
{
WorkflowResultDto
workflowResultDto
=
resultDto
.
get
(
0
);
model
.
setWorkflowProstanceId
(
workflowResultDto
.
getInstanceId
());
model
.
setNextExecuteIds
(
workflowResultDto
.
getNextExecutorRoleIds
());
model
.
setNextTaskId
(
workflowResultDto
.
getNextTaskId
());
model
.
setNextExecuteUserIds
(
workflowResultDto
.
getNextExecutorUserIds
());
// 创建代办
buildTask
(
model
,
workflowResultDto
);
}
}
else
{
// 存在流程,执行
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"sequenceNbr"
,
model
.
getSequenceNbr
());
map
.
put
(
"op"
,
"0"
);
map
.
put
(
"comments"
,
"提交"
);
JyjcOpeningApplication
jyjcOpeningApplication
=
executeFlow
(
map
);
model
.
setNextTaskId
(
jyjcOpeningApplication
.
getNextTaskId
());
}
@Transactional
(
rollbackFor
=
{
Exception
.
class
,
BaseException
.
class
})
public
JyjcOpeningApplicationModel
submitApplication
(
JyjcOpeningApplicationModel
model
)
{
model
.
setApplyTime
(
new
Date
());
String
instanceId
=
model
.
getWorkflowProstanceId
();
if
(
StringUtils
.
isBlank
(
instanceId
))
{
// 未开启过工作流则进行开启 startProcess
ActWorkflowBatchDTO
actWorkflowBatchDTO
=
new
ActWorkflowBatchDTO
();
ActWorkflowStartDTO
dto
=
new
ActWorkflowStartDTO
();
ArrayList
<
ActWorkflowStartDTO
>
list
=
new
ArrayList
<>();
dto
.
setProcessDefinitionKey
(
processDefinitionKey
);
dto
.
setBusinessKey
(
"1"
);
dto
.
setCompleteFirstTask
(
Boolean
.
TRUE
);
// 接受机构
list
.
add
(
dto
);
actWorkflowBatchDTO
.
setProcess
(
list
);
List
<
ProcessTaskDTO
>
processTaskDTOS
=
cmWorkflowService
.
startBatch
(
actWorkflowBatchDTO
);
List
<
WorkflowResultDto
>
resultDto
=
taskModelService
.
buildWorkFlowInfo
(
processTaskDTOS
);
WorkflowResultDto
workflowResultDto
=
resultDto
.
get
(
0
);
model
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_PROCESSED
.
getCode
()));
model
.
setStatusName
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_PROCESSED
.
getName
()));
model
.
setPromoter
(
RequestContext
.
getExeUserId
());
model
.
setWorkflowProstanceId
(
workflowResultDto
.
getInstanceId
());
model
.
setNextExecuteIds
(
workflowResultDto
.
getNextExecutorRoleIds
());
model
.
setNextTaskId
(
workflowResultDto
.
getNextTaskId
());
model
.
setNextExecuteUserIds
(
workflowResultDto
.
getNextExecutorUserIds
());
// 首次提交时删除暂存的待办
taskModelService
.
deleteTaskModel
(
model
.
getSequenceNbr
()
+
""
);
// 创建代办
buildTask
(
model
,
workflowResultDto
);
// 缓存流程数据
commonService
.
saveExecuteFlowData2Redis
(
workflowResultDto
.
getInstanceId
(),
this
.
buildInstanceRuntimeData
(
model
));
return
this
.
updateWithModel
(
model
);
}
else
{
}
else
{
// 只有第一次改为待提交
// 首次提交时删除暂存的待办
if
(
entity
==
null
)
{
taskModelService
.
deleteTaskModel
(
model
.
getSequenceNbr
()
+
""
);
model
.
setStatus
(
FlowStatusEnum
.
TO_BE_SUBMITTED
.
getCode
()
+
""
);
// 存在流程,执行
// 暂存生成代办逻辑
executeOneStep
(
model
);
ArrayList
<
TaskModelDto
>
list
=
new
ArrayList
<>();
return
this
.
updateWithModel
(
model
);
TaskModelDto
dto
=
new
TaskModelDto
();
TaskMessageDto
taskMessageDto
=
new
TaskMessageDto
();
BeanUtil
.
copyProperties
(
model
,
taskMessageDto
);
// 数据参数
dto
.
setModel
(
taskMessageDto
);
// 摘要
dto
.
setTaskContent
(
String
.
format
(
"检验检测业务开通办理,【申请单号:%s】"
,
model
.
getApplicationSeq
()));
// 申请单号
dto
.
setTaskCode
(
model
.
getApplicationSeq
());
// 业务类型
dto
.
setTaskType
(
BusinessTypeEnum
.
JY_OPENING_APPLICATION
.
getCode
());
// 业务主键
dto
.
setRelationId
(
String
.
valueOf
(
model
.
getSequenceNbr
()));
dto
.
setNextExecuteUser
(
""
);
list
.
add
(
dto
);
commonServiceImpl
.
buildTaskModel
(
list
);
}
}
}
model
.
setStatusName
(
FlowStatusEnum
.
getNameByType
(
Long
.
parseLong
((
model
.
getStatus
()))));
}
return
this
.
updateWithModel
(
model
);
private
void
createDraftTask
(
JyjcOpeningApplicationModel
model
)
{
ArrayList
<
TaskModelDto
>
list
=
new
ArrayList
<>();
TaskModelDto
dto
=
new
TaskModelDto
();
TaskMessageDto
taskMessageDto
=
new
TaskMessageDto
();
BeanUtil
.
copyProperties
(
model
,
taskMessageDto
);
// 数据参数
dto
.
setModel
(
taskMessageDto
);
// 摘要
dto
.
setTaskContent
(
String
.
format
(
"检验检测业务开通办理,【申请单号:%s】"
,
model
.
getApplicationSeq
()));
// 申请单号
dto
.
setTaskCode
(
model
.
getApplicationSeq
());
// 业务类型
dto
.
setTaskType
(
BusinessTypeEnum
.
JY_OPENING_APPLICATION
.
getCode
());
// 业务主键
dto
.
setRelationId
(
String
.
valueOf
(
model
.
getSequenceNbr
()));
dto
.
setNextExecuteUser
(
""
);
list
.
add
(
dto
);
taskModelService
.
buildTaskModel
(
list
);
}
}
@Transactional
(
rollbackFor
=
{
Exception
.
class
,
BaseException
.
class
})
@Transactional
(
rollbackFor
=
{
Exception
.
class
,
BaseException
.
class
})
public
JyjcOpeningApplicationModel
resubmit
(
JyjcOpeningApplicationModel
model
)
{
public
JyjcOpeningApplicationModel
resubmit
(
JyjcOpeningApplicationModel
model
)
{
model
.
setStatus
(
FlowStatusEnum
.
TO_BE_PROCESSED
.
getCode
()
+
""
);
model
.
setStatus
(
FlowStatusEnum
.
TO_BE_PROCESSED
.
getCode
()
+
""
);
model
=
this
.
updateWithModel
(
model
);
model
=
this
.
updateWithModel
(
model
);
executeFlow
(
MapBuilder
.<
String
,
Object
>
create
().
put
(
"op"
,
"0"
).
put
(
"instanceId"
,
model
.
getWorkflowProstanceId
()).
put
(
"comments"
,
""
).
build
());
executeFlow
(
MapBuilder
.<
String
,
Object
>
create
()
.
put
(
"op"
,
"0"
)
.
put
(
"instanceId"
,
model
.
getWorkflowProstanceId
())
.
put
(
"comments"
,
""
)
.
put
(
"nextTaskId"
,
model
.
getNextTaskId
())
.
build
());
return
model
;
return
model
;
}
}
...
@@ -303,7 +306,7 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
...
@@ -303,7 +306,7 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
}
}
public
Page
<
JyjcOpeningApplicationModel
>
queryForJyjcOpeningApplicationPage
(
Page
<
JyjcOpeningApplication
>
page
,
JyjcOpeningApplicationRequstDto
dto
)
{
public
Page
<
JyjcOpeningApplicationModel
>
queryForJyjcOpeningApplicationPage
(
Page
<
JyjcOpeningApplication
>
page
,
JyjcOpeningApplicationRequstDto
dto
)
{
ReginParams
reginParams
=
common
serviceImpl
.
getReginParamsOfCurrentUser
();
ReginParams
reginParams
=
common
Service
.
getReginParamsOfCurrentUser
();
String
currentUserId
=
reginParams
.
getUserModel
().
getUserId
();
String
currentUserId
=
reginParams
.
getUserModel
().
getUserId
();
String
level
=
reginParams
.
getCompany
().
getLevel
();
String
level
=
reginParams
.
getCompany
().
getLevel
();
if
(
BaseController
.
COMPANY_TYPE_COMPANY
.
equals
(
level
))
{
if
(
BaseController
.
COMPANY_TYPE_COMPANY
.
equals
(
level
))
{
...
@@ -344,7 +347,7 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
...
@@ -344,7 +347,7 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
* @author yangyang
* @author yangyang
*/
*/
public
JyjcOpeningApplicationModel
queryDetail
(
Long
sequenceNbr
)
{
public
JyjcOpeningApplicationModel
queryDetail
(
Long
sequenceNbr
)
{
ReginParams
reginParams
=
common
serviceImpl
.
getReginParamsOfCurrentUser
();
ReginParams
reginParams
=
common
Service
.
getReginParamsOfCurrentUser
();
if
(
ValidationUtil
.
isEmpty
(
reginParams
.
getCompany
()))
{
if
(
ValidationUtil
.
isEmpty
(
reginParams
.
getCompany
()))
{
throw
new
RuntimeException
(
"未指定人员归属单位信息"
);
throw
new
RuntimeException
(
"未指定人员归属单位信息"
);
}
}
...
@@ -407,9 +410,9 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
...
@@ -407,9 +410,9 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
private
void
setBaseUnitLicences
(
String
unitCode
,
JyjcOpeningApplicationModel
jyjcOpeningApplicationModel
,
boolean
isNeedFilter
)
{
private
void
setBaseUnitLicences
(
String
unitCode
,
JyjcOpeningApplicationModel
jyjcOpeningApplicationModel
,
boolean
isNeedFilter
)
{
List
<
BaseUnitLicence
>
baseUnitLicences
=
baseUnitLicenceMapper
.
selectList
(
new
LambdaQueryWrapper
<
BaseUnitLicence
>().
eq
(
BaseUnitLicence:
:
getUnitCode
,
unitCode
).
in
(
BaseUnitLicence:
:
getCertTypeCode
,
Arrays
.
asList
(
jyCertTypeCode
,
jcCertTypeCode
)));
List
<
BaseUnitLicence
>
baseUnitLicences
=
baseUnitLicenceMapper
.
selectList
(
new
LambdaQueryWrapper
<
BaseUnitLicence
>().
eq
(
BaseUnitLicence:
:
getUnitCode
,
unitCode
).
in
(
BaseUnitLicence:
:
getCertTypeCode
,
Arrays
.
asList
(
jyCertTypeCode
,
jcCertTypeCode
)));
List
<
TzBaseUnitLicenceDto
>
baseUnitLicencesDtos
=
baseUnitLicences
.
stream
().
map
(
l
->
{
List
<
TzBaseUnitLicenceDto
>
baseUnitLicencesDtos
=
baseUnitLicences
.
stream
().
map
(
l
->
{
TzBaseUnitLicenceDto
licenceDto
=
new
TzBaseUnitLicenceDto
();
TzBaseUnitLicenceDto
licenceDto
=
new
TzBaseUnitLicenceDto
();
BeanUtil
.
copyProperties
(
l
,
licenceDto
);
BeanUtil
.
copyProperties
(
l
,
licenceDto
);
licenceDto
.
setCertTypeCode
(
this
.
castCode2Str
(
l
.
getCertTypeCode
()));
licenceDto
.
setCertTypeCode
(
this
.
castCode2Str
(
l
.
getCertTypeCode
()));
return
licenceDto
;
return
licenceDto
;
}).
collect
(
Collectors
.
toList
());
}).
collect
(
Collectors
.
toList
());
...
@@ -507,104 +510,212 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
...
@@ -507,104 +510,212 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
/**
/**
* 接收/驳回通知检验单
* 接收/驳回通知检验单
*/
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
JyjcOpeningApplication
executeFlow
(
Map
<
String
,
Object
>
params
)
{
public
JyjcOpeningApplication
executeFlow
(
Map
<
String
,
Object
>
params
)
{
ReginParams
reginParams
=
JSONObject
.
parseObject
(
redisUtils
.
get
(
RedisKey
.
buildReginKey
(
RequestContext
.
getExeUserId
(),
RequestContext
.
getToken
())).
toString
(),
ReginParams
.
class
);
String
instanceId
=
params
.
get
(
"instanceId"
).
toString
();
Long
sequenceNbr
=
Long
.
parseLong
(
params
.
get
(
"sequenceNbr"
)
+
""
);
String
nextTaskId
=
params
.
get
(
"nextTaskId"
).
toString
();
String
op
=
params
.
get
(
"op"
).
toString
();
String
lockKey
=
CommonServiceImpl
.
buildJcExecuteLockKey
(
instanceId
);
JyjcOpeningApplication
data
=
jyjcOpeningApplicationMapper
.
selectById
(
sequenceNbr
);
RLock
lock
=
redissonClient
.
getLock
(
lockKey
);
//组装信息
try
{
TaskResultDTO
dto
=
new
TaskResultDTO
();
boolean
isLocked
=
lock
.
tryLock
(
0
,
180
,
TimeUnit
.
SECONDS
);
dto
.
setResultCode
(
"approvalStatus"
);
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
dto
.
setTaskId
(
data
.
getNextTaskId
());
if
(!
isLocked
)
{
dto
.
setComment
(
params
.
get
(
"comments"
).
toString
());
throw
new
BadRequest
(
"当前流程已经被执行!请重新打开页面查看并执行!"
);
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
}
map
.
put
(
"approvalStatus"
,
op
);
// 流程执行时,状态及权限校验
if
(
String
.
valueOf
(
FlowStatusEnum
.
ROLLBACK
.
getCode
()).
equals
(
data
.
getStatus
())
||
String
.
valueOf
(
FlowStatusEnum
.
REJECTED
.
getCode
()).
equals
(
data
.
getStatus
()))
{
commonService
.
checkForExecuteFlow
(
nextTaskId
,
instanceId
);
map
.
put
(
"approvalStatus"
,
"提交"
);
Long
sequenceNbr
=
Long
.
parseLong
(
params
.
get
(
"sequenceNbr"
)
+
""
);
}
String
op
=
params
.
get
(
"op"
).
toString
();
dto
.
setVariable
(
map
);
JyjcOpeningApplication
jyjcOpeningApplication
=
jyjcOpeningApplicationMapper
.
selectById
(
sequenceNbr
);
ProcessTaskDTO
complete
=
new
ProcessTaskDTO
();
//组装信息
if
(
"0"
.
equals
(
op
))
{
TaskResultDTO
dto
=
new
TaskResultDTO
();
complete
=
cmWorkflowService
.
complete
(
data
.
getNextTaskId
(),
dto
);
dto
.
setResultCode
(
"approvalStatus"
);
}
else
{
dto
.
setTaskId
(
jyjcOpeningApplication
.
getNextTaskId
());
complete
=
cmWorkflowService
.
reject
(
data
.
getNextTaskId
(),
dto
);
dto
.
setComment
(
params
.
get
(
"comments"
).
toString
());
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
}
map
.
put
(
"approvalStatus"
,
op
);
if
(
String
.
valueOf
(
FlowStatusEnum
.
ROLLBACK
.
getCode
()).
equals
(
jyjcOpeningApplication
.
getStatus
())
||
String
.
valueOf
(
FlowStatusEnum
.
REJECTED
.
getCode
()).
equals
(
jyjcOpeningApplication
.
getStatus
()))
{
map
.
put
(
"approvalStatus"
,
"提交"
);
}
dto
.
setVariable
(
map
);
ProcessTaskDTO
complete
=
new
ProcessTaskDTO
();
if
(
"0"
.
equals
(
op
))
{
complete
=
cmWorkflowService
.
complete
(
jyjcOpeningApplication
.
getNextTaskId
(),
dto
);
}
else
{
complete
=
cmWorkflowService
.
reject
(
jyjcOpeningApplication
.
getNextTaskId
(),
dto
);
ArrayList
<
ProcessTaskDTO
>
processTaskDTOS
=
new
ArrayList
<>();
}
processTaskDTOS
.
add
(
complete
);
ArrayList
<
ProcessTaskDTO
>
processTaskDTOS
=
new
ArrayList
<>(
);
List
<
WorkflowResultDto
>
resultDto
=
commonServiceImpl
.
buildWorkFlowInfo
(
processTaskDTOS
);
processTaskDTOS
.
add
(
complete
);
if
(!
org
.
springframework
.
util
.
ObjectUtils
.
isEmpty
(
resultDto
)
&&
!
org
.
springframework
.
util
.
ObjectUtils
.
isEmpty
(
resultDto
.
get
(
0
)))
{
List
<
WorkflowResultDto
>
resultDto
=
taskModelService
.
buildWorkFlowInfo
(
processTaskDTOS
);
WorkflowResultDto
workflowResultDto
=
resultDto
.
get
(
0
);
WorkflowResultDto
workflowResultDto
=
resultDto
.
get
(
0
);
if
(!
ObjectUtils
.
isEmpty
(
workflowResultDto
.
getNextTaskId
()))
{
if
(!
ObjectUtils
.
isEmpty
(
workflowResultDto
.
getNextTaskId
()))
{
if
(
"1"
.
equals
(
op
))
{
if
(
"1"
.
equals
(
op
))
{
// 驳回
// 驳回
data
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
REJECTED
.
getCode
()));
jyjcOpeningApplication
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
REJECTED
.
getCode
()));
data
.
setStatusName
(
String
.
valueOf
(
FlowStatusEnum
.
REJECTED
.
getName
()));
jyjcOpeningApplication
.
setStatusName
(
String
.
valueOf
(
FlowStatusEnum
.
REJECTED
.
getName
()));
data
.
setPromoter
(
""
);
jyjcOpeningApplication
.
setPromoter
(
""
);
}
else
{
}
else
{
data
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_PROCESSED
.
getCode
()));
// 提交
data
.
setStatusName
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_PROCESSED
.
getName
()));
jyjcOpeningApplication
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_PROCESSED
.
getCode
()));
data
.
setPromoter
(
reginParams
.
getUserModel
().
getUserId
());
jyjcOpeningApplication
.
setStatusName
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_PROCESSED
.
getName
()));
jyjcOpeningApplication
.
setPromoter
(
RequestContext
.
getExeUserId
());
}
}
jyjcOpeningApplication
.
setNextTaskId
(
workflowResultDto
.
getNextTaskId
());
jyjcOpeningApplication
.
setNextExecuteUserIds
(
workflowResultDto
.
getNextExecutorUserIds
());
// 更新代办
// 更新代办
updateTask
(
data
,
workflowResultDto
,
op
);
updateTask
(
jyjcOpeningApplication
,
workflowResultDto
,
op
);
data
.
setNextTaskId
(
workflowResultDto
.
getNextTaskId
());
}
else
{
}
else
{
// 流程结束
// 流程结束
data
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
()));
jyjcOpeningApplication
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
()));
//更新办理日期
//更新办理日期
data
.
setAcceptDate
(
new
Date
());
jyjcOpeningApplication
.
setAcceptDate
(
new
Date
());
// 更新代办
// 更新代办
HashMap
<
String
,
Object
>
taskParams
=
new
HashMap
<>();
HashMap
<
String
,
Object
>
taskParams
=
new
HashMap
<>();
taskParams
.
put
(
"relationId"
,
data
.
getWorkflowProstanceId
());
taskParams
.
put
(
"relationId"
,
jyjcOpeningApplication
.
getWorkflowProstanceId
());
taskParams
.
put
(
"flowStatus"
,
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
());
taskParams
.
put
(
"flowStatus"
,
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
());
taskParams
.
put
(
"flowStatusLabel"
,
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
());
taskParams
.
put
(
"flowStatusLabel"
,
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
());
taskParams
.
put
(
"taskStatus"
,
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
());
taskParams
.
put
(
"taskStatus"
,
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
());
taskParams
.
put
(
"taskStatusLabel"
,
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
());
taskParams
.
put
(
"taskStatusLabel"
,
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
());
taskParams
.
put
(
"model"
,
data
);
taskParams
.
put
(
"model"
,
jyjcOpeningApplication
);
commonServiceImpl
.
updateTaskModel
(
taskParams
);
taskModelService
.
updateTaskModel
(
taskParams
);
data
.
setStatusName
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
());
jyjcOpeningApplication
.
setPromoter
(
""
);
jyjcOpeningApplication
.
setNextTaskId
(
""
);
jyjcOpeningApplication
.
setNextExecuteUserIds
(
""
);
jyjcOpeningApplication
.
setStatusName
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getName
());
}
jyjcOpeningApplicationMapper
.
updateById
(
jyjcOpeningApplication
);
// 已完成 作废逻辑
if
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
()).
equals
(
jyjcOpeningApplication
.
getStatus
()))
{
doDiscard
(
jyjcOpeningApplication
.
getUnitCode
(),
jyjcOpeningApplication
.
getSequenceNbr
(),
jyjcOpeningApplication
.
getOpenBizType
());
}
// 更新流程中的流程数据
commonService
.
saveExecuteFlowData2Redis
(
jyjcOpeningApplication
.
getWorkflowProstanceId
(),
this
.
buildInstanceRuntimeData
(
jyjcOpeningApplication
));
return
jyjcOpeningApplication
;
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
lock
.
isHeldByCurrentThread
())
{
lock
.
unlock
();
}
}
}
}
jyjcOpeningApplicationMapper
.
updateById
(
data
);
return
null
;
// 已完成 作废逻辑
}
if
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
()).
equals
(
data
.
getStatus
()))
{
doDiscard
(
data
.
getUnitCode
(),
data
.
getSequenceNbr
(),
data
.
getOpenBizType
());
private
void
executeOneStep
(
JyjcOpeningApplicationModel
openingApplication
)
{
String
instanceId
=
openingApplication
.
getWorkflowProstanceId
();
String
nextTaskId
=
openingApplication
.
getNextTaskId
();
String
lockKey
=
CommonServiceImpl
.
buildJcExecuteLockKey
(
instanceId
);
RLock
lock
=
redissonClient
.
getLock
(
lockKey
);
try
{
boolean
isLocked
=
lock
.
tryLock
(
0
,
180
,
TimeUnit
.
SECONDS
);
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
if
(!
isLocked
)
{
throw
new
BadRequest
(
"当前流程已经被执行!请重新打开页面查看并执行!"
);
}
// 流程执行时,状态及权限校验
commonService
.
checkForExecuteFlow
(
nextTaskId
,
instanceId
);
// 组装信息执行工作流
TaskResultDTO
dto
=
new
TaskResultDTO
();
dto
.
setResultCode
(
"approvalStatus"
);
dto
.
setTaskId
(
nextTaskId
);
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"approvalStatus"
,
"提交"
);
dto
.
setVariable
(
map
);
ProcessTaskDTO
complete
=
cmWorkflowService
.
complete
(
nextTaskId
,
dto
);
ArrayList
<
ProcessTaskDTO
>
processTaskDTOS
=
new
ArrayList
<>();
processTaskDTOS
.
add
(
complete
);
List
<
WorkflowResultDto
>
resultDto
=
taskModelService
.
buildWorkFlowInfo
(
processTaskDTOS
);
WorkflowResultDto
workflowResultDto
=
resultDto
.
get
(
0
);
// 更新业务信息
openingApplication
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_PROCESSED
.
getCode
()));
openingApplication
.
setStatusName
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_PROCESSED
.
getName
()));
openingApplication
.
setPromoter
(
RequestContext
.
getExeUserId
());
openingApplication
.
setNextTaskId
(
workflowResultDto
.
getNextTaskId
());
openingApplication
.
setNextExecuteUserIds
(
workflowResultDto
.
getNextExecutorUserIds
());
// 更新代办
JyjcOpeningApplication
jyjcOpeningApplicationEntry
=
new
JyjcOpeningApplication
();
BeanUtil
.
copyProperties
(
openingApplication
,
jyjcOpeningApplicationEntry
);
updateTask
(
jyjcOpeningApplicationEntry
,
workflowResultDto
,
"0"
);
// 更新流程中的流程数据
commonService
.
saveExecuteFlowData2Redis
(
instanceId
,
this
.
buildInstanceRuntimeData
(
jyjcOpeningApplicationEntry
));
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
lock
.
isHeldByCurrentThread
())
{
lock
.
unlock
();
}
}
}
return
data
;
}
}
/**
/**
* 撤回流程办理单
* 撤回流程办理单
*/
*/
public
JyjcOpeningApplication
stopFlow
(
String
sequenceNbr
)
{
public
JyjcOpeningApplication
stopFlow
(
String
sequenceNbr
,
String
instanceId
,
String
nextTaskId
)
{
JyjcOpeningApplication
jyjcOpeningApplication
=
jyjcOpeningApplicationMapper
.
selectById
(
sequenceNbr
);
String
lockKey
=
CommonServiceImpl
.
buildJcExecuteLockKey
(
instanceId
);
//撤回流程
RLock
lock
=
redissonClient
.
getLock
(
lockKey
);
ProcessTaskDTO
processTaskDTO
=
cmWorkflowService
.
rollBack
(
jyjcOpeningApplication
.
getWorkflowProstanceId
());
try
{
ArrayList
<
ProcessTaskDTO
>
processTaskDTOS
=
new
ArrayList
<>();
boolean
isLocked
=
lock
.
tryLock
(
0
,
180
,
TimeUnit
.
SECONDS
);
processTaskDTOS
.
add
(
processTaskDTO
);
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
jyjcOpeningApplication
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
ROLLBACK
.
getCode
()));
if
(!
isLocked
)
{
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
jyjcOpeningApplication
));
throw
new
BadRequest
(
"当前流程已经被执行!请重新打开页面查看并执行!"
);
List
<
WorkflowResultDto
>
resultDto
=
commonServiceImpl
.
buildWorkFlowInfo
(
processTaskDTOS
);
}
if
(!
ObjectUtils
.
isEmpty
(
resultDto
)
&&
!
ObjectUtils
.
isEmpty
(
resultDto
.
get
(
0
)))
{
// 流程执行时,状态及权限校验
WorkflowResultDto
workflowResultDto
=
resultDto
.
get
(
0
);
commonService
.
checkForRevocationFlow
(
nextTaskId
,
instanceId
);
jsonObject
.
put
(
"nextExecuteUser"
,
workflowResultDto
.
getNextExecutorRoleIds
());
JyjcOpeningApplication
jyjcOpeningApplication
=
jyjcOpeningApplicationMapper
.
selectById
(
sequenceNbr
);
jyjcOpeningApplication
.
setNextTaskId
(
workflowResultDto
.
getNextTaskId
());
//撤回流程
ProcessTaskDTO
processTaskDTO
=
cmWorkflowService
.
rollBack
(
jyjcOpeningApplication
.
getWorkflowProstanceId
());
ArrayList
<
ProcessTaskDTO
>
processTaskDTOS
=
new
ArrayList
<>();
processTaskDTOS
.
add
(
processTaskDTO
);
jyjcOpeningApplication
.
setStatus
(
String
.
valueOf
(
FlowStatusEnum
.
ROLLBACK
.
getCode
()));
jyjcOpeningApplication
.
setStatusName
(
FlowStatusEnum
.
ROLLBACK
.
getName
());
jyjcOpeningApplication
.
setStatusName
(
FlowStatusEnum
.
ROLLBACK
.
getName
());
jyjcOpeningApplication
.
setPromoter
(
""
);
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
jyjcOpeningApplication
));
List
<
WorkflowResultDto
>
resultDto
=
taskModelService
.
buildWorkFlowInfo
(
processTaskDTOS
);
if
(!
ObjectUtils
.
isEmpty
(
resultDto
)
&&
!
ObjectUtils
.
isEmpty
(
resultDto
.
get
(
0
)))
{
WorkflowResultDto
workflowResultDto
=
resultDto
.
get
(
0
);
jsonObject
.
put
(
"nextExecuteUser"
,
workflowResultDto
.
getNextExecutorRoleIds
());
jyjcOpeningApplication
.
setNextTaskId
(
workflowResultDto
.
getNextTaskId
());
jyjcOpeningApplication
.
setNextExecuteUserIds
(
workflowResultDto
.
getNextExecutorUserIds
());
}
jsonObject
.
put
(
"nextTaskId"
,
jyjcOpeningApplication
.
getNextTaskId
());
jsonObject
.
put
(
"nextExecuteUserIds"
,
jyjcOpeningApplication
.
getNextExecuteUserIds
());
jsonObject
.
put
(
"taskType"
,
BusinessTypeEnum
.
JY_OPENING_APPLICATION
.
getCode
());
jsonObject
.
put
(
"flowStatus"
,
FlowStatusEnum
.
ROLLBACK
.
getCode
());
jsonObject
.
put
(
"flowStatusLabel"
,
FlowStatusEnum
.
ROLLBACK
.
getName
());
// 撤回删除代办
taskModelService
.
rollbackTask
(
jyjcOpeningApplication
.
getWorkflowProstanceId
(),
jsonObject
);
// 更新数据
jyjcOpeningApplicationMapper
.
updateById
(
jyjcOpeningApplication
);
// 缓存下一个任务id,再任务进行时,用来校验数据,不再进行数据库查询
commonService
.
saveExecuteFlowData2Redis
(
instanceId
,
this
.
buildInstanceRuntimeData
(
jyjcOpeningApplication
));
return
jyjcOpeningApplication
;
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
lock
.
isHeldByCurrentThread
())
{
lock
.
unlock
();
}
}
}
jsonObject
.
put
(
"nextTaskId"
,
jyjcOpeningApplication
.
getNextTaskId
());
return
null
;
jsonObject
.
put
(
"taskType"
,
BusinessTypeEnum
.
JY_OPENING_APPLICATION
.
getCode
());
}
jsonObject
.
put
(
"flowStatus"
,
FlowStatusEnum
.
ROLLBACK
.
getCode
());
jsonObject
.
put
(
"flowStatusLabel"
,
FlowStatusEnum
.
ROLLBACK
.
getName
());
private
InstanceRuntimeData
buildInstanceRuntimeData
(
JyjcOpeningApplicationModel
jyjcOpeningApplication
)
{
// 撤回删除代办
return
InstanceRuntimeData
.
builder
()
commonServiceImpl
.
rollbackTask
(
jyjcOpeningApplication
.
getWorkflowProstanceId
(),
jsonObject
);
.
nextExecuteUserIds
(
jyjcOpeningApplication
.
getNextExecuteUserIds
())
// 更新数据
.
promoter
(
jyjcOpeningApplication
.
getPromoter
())
jyjcOpeningApplicationMapper
.
updateById
(
jyjcOpeningApplication
);
.
nextTaskId
(
jyjcOpeningApplication
.
getNextTaskId
())
return
jyjcOpeningApplication
;
.
build
();
}
private
InstanceRuntimeData
buildInstanceRuntimeData
(
JyjcOpeningApplication
jyjcOpeningApplication
)
{
return
InstanceRuntimeData
.
builder
()
.
nextExecuteUserIds
(
jyjcOpeningApplication
.
getNextExecuteUserIds
())
.
promoter
(
jyjcOpeningApplication
.
getPromoter
())
.
nextTaskId
(
jyjcOpeningApplication
.
getNextTaskId
())
.
build
();
}
}
...
@@ -648,7 +759,7 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
...
@@ -648,7 +759,7 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
private
void
buildTask
(
JyjcOpeningApplicationModel
model
,
WorkflowResultDto
workflowResultDto
)
{
private
void
buildTask
(
JyjcOpeningApplicationModel
model
,
WorkflowResultDto
workflowResultDto
)
{
ReginParams
reginParams
=
common
serviceImpl
.
getReginParamsOfCurrentUser
();
ReginParams
reginParams
=
common
Service
.
getReginParamsOfCurrentUser
();
// 代办消息
// 代办消息
ArrayList
<
TaskModelDto
>
list
=
new
ArrayList
<>();
ArrayList
<
TaskModelDto
>
list
=
new
ArrayList
<>();
TaskModelDto
dto
=
new
TaskModelDto
();
TaskModelDto
dto
=
new
TaskModelDto
();
...
@@ -676,7 +787,7 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
...
@@ -676,7 +787,7 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
dto
.
setNextExecuteUser
(
workflowResultDto
.
getNextExecutorRoleIds
());
dto
.
setNextExecuteUser
(
workflowResultDto
.
getNextExecutorRoleIds
());
dto
.
setPageType
(
"look"
);
dto
.
setPageType
(
"look"
);
list
.
add
(
dto
);
list
.
add
(
dto
);
commonServiceImpl
.
buildTaskModel
(
list
);
taskModelService
.
buildTaskModel
(
list
);
}
}
private
void
updateTask
(
JyjcOpeningApplication
model
,
WorkflowResultDto
workflowResultDto
,
String
op
)
{
private
void
updateTask
(
JyjcOpeningApplication
model
,
WorkflowResultDto
workflowResultDto
,
String
op
)
{
...
@@ -687,7 +798,7 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
...
@@ -687,7 +798,7 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
params
.
put
(
"flowStatusLabel"
,
model
.
getStatus
());
params
.
put
(
"flowStatusLabel"
,
model
.
getStatus
());
params
.
put
(
"taskStatus"
,
model
.
getStatus
());
params
.
put
(
"taskStatus"
,
model
.
getStatus
());
params
.
put
(
"taskStatusLabel"
,
model
.
getStatus
());
params
.
put
(
"taskStatusLabel"
,
model
.
getStatus
());
TaskV2Model
taskV2Model
=
commonServiceImpl
.
updateTaskModel
(
params
);
TaskV2Model
taskV2Model
=
taskModelService
.
updateTaskModel
(
params
);
// 创建新的代办
// 创建新的代办
if
(!
ObjectUtils
.
isEmpty
(
taskV2Model
))
{
if
(!
ObjectUtils
.
isEmpty
(
taskV2Model
))
{
TaskModelDto
taskModelDto
=
new
TaskModelDto
();
TaskModelDto
taskModelDto
=
new
TaskModelDto
();
...
@@ -711,17 +822,31 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
...
@@ -711,17 +822,31 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
}
}
taskModelDto
.
setNextExecuteUser
(
workflowResultDto
.
getNextExecutorRoleIds
());
taskModelDto
.
setNextExecuteUser
(
workflowResultDto
.
getNextExecutorRoleIds
());
commonServiceImpl
.
buildTaskModel
(
Collections
.
singletonList
(
taskModelDto
));
taskModelService
.
buildTaskModel
(
Collections
.
singletonList
(
taskModelDto
));
}
else
{
}
else
{
JyjcOpeningApplicationModel
applicationModel
=
new
JyjcOpeningApplicationModel
();
JyjcOpeningApplicationModel
applicationModel
=
new
JyjcOpeningApplicationModel
();
BeanUtil
.
copyProperties
(
model
,
applicationModel
);
BeanUtil
.
copyProperties
(
model
,
applicationModel
);
buildTask
(
applicationModel
,
workflowResultDto
);
buildTask
(
applicationModel
,
workflowResultDto
);
}
}
}
}
@Override
@Override
public
List
<
TzBaseEnterpriseInfoDto
>
getUnitListByRecord
(
String
record
)
{
public
List
<
TzBaseEnterpriseInfoDto
>
getUnitListByRecord
(
String
record
)
{
return
ruleActionHandler
.
getInspectionUnitList
(
new
ArrayList
<>(),
true
,
record
,
OpenBizTypeEnum
.
JC
.
getCode
());
return
ruleActionHandler
.
getInspectionUnitList
(
new
ArrayList
<>(),
true
,
record
,
OpenBizTypeEnum
.
JC
.
getCode
());
}
}
/**
* 缓存当前正在流程中的实例的流程数据
*/
public
void
initFlowData2Redis
()
{
LambdaQueryWrapper
<
JyjcOpeningApplication
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
ne
(
JyjcOpeningApplication:
:
getStatus
,
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
());
queryWrapper
.
ne
(
JyjcOpeningApplication:
:
getStatus
,
FlowStatusEnum
.
TO_BE_DISCARD
.
getCode
());
queryWrapper
.
isNotNull
(
JyjcOpeningApplication:
:
getWorkflowProstanceId
);
queryWrapper
.
select
(
JyjcOpeningApplication:
:
getWorkflowProstanceId
,
JyjcOpeningApplication:
:
getNextTaskId
,
JyjcOpeningApplication:
:
getPromoter
,
JyjcOpeningApplication:
:
getNextExecuteUserIds
);
List
<
JyjcOpeningApplication
>
openingApplicationListInFlowing
=
this
.
list
(
queryWrapper
);
openingApplicationListInFlowing
.
forEach
(
inspectionApplication
->
{
commonService
.
saveExecuteFlowData2Redis
(
inspectionApplication
.
getWorkflowProstanceId
(),
this
.
buildInstanceRuntimeData
(
inspectionApplication
));
});
}
}
}
\ No newline at end of file
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