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
5c01536e
Commit
5c01536e
authored
Mar 13, 2024
by
suhuiguang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.设备移交并发修改
parent
7995e161
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
176 additions
and
102 deletions
+176
-102
JgEquipTransferDto.java
...ejoin/amos/boot/module/jg/api/dto/JgEquipTransferDto.java
+10
-7
JgEquipTransferServiceImpl.java
...odule/jg/biz/service/impl/JgEquipTransferServiceImpl.java
+166
-95
No files found.
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/dto/JgEquipTransferDto.java
View file @
5c01536e
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
api
.
dto
;
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
api
.
dto
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.yeejoin.amos.boot.biz.common.dto.BaseDto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
com.yeejoin.amos.boot.biz.common.dto.BaseDto
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.EqualsAndHashCode
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -19,10 +19,10 @@ import java.util.Map;
...
@@ -19,10 +19,10 @@ import java.util.Map;
*/
*/
@Data
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@EqualsAndHashCode
(
callSuper
=
true
)
@ApiModel
(
value
=
"JgEquipTransferDto"
,
description
=
"设备移交"
)
@ApiModel
(
value
=
"JgEquipTransferDto"
,
description
=
"设备移交"
)
public
class
JgEquipTransferDto
extends
BaseDto
{
public
class
JgEquipTransferDto
extends
BaseDto
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"申请编号"
)
@ApiModelProperty
(
value
=
"申请编号"
)
private
String
applyNo
;
private
String
applyNo
;
...
@@ -91,7 +91,6 @@ public class JgEquipTransferDto extends BaseDto {
...
@@ -91,7 +91,6 @@ public class JgEquipTransferDto extends BaseDto {
@ApiModelProperty
(
value
=
"流程执行角色"
)
@ApiModelProperty
(
value
=
"流程执行角色"
)
private
String
instanceRoles
;
private
String
instanceRoles
;
@TableField
(
exist
=
false
)
@ApiModelProperty
(
value
=
"告知设备列表"
)
@ApiModelProperty
(
value
=
"告知设备列表"
)
private
List
<
Map
<
String
,
Object
>>
deviceList
;
private
List
<
Map
<
String
,
Object
>>
deviceList
;
...
@@ -138,5 +137,9 @@ public class JgEquipTransferDto extends BaseDto {
...
@@ -138,5 +137,9 @@ public class JgEquipTransferDto extends BaseDto {
private
String
nextExecuteUserIds
;
private
String
nextExecuteUserIds
;
@ApiModelProperty
(
value
=
"转办人"
)
@ApiModelProperty
(
value
=
"转办人"
)
private
String
transferToUserIds
;
private
String
transferToUserIds
;
@ApiModelProperty
(
value
=
"工作流下一节点任务id"
)
private
String
nextTaskId
;
}
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/service/impl/JgEquipTransferServiceImpl.java
View file @
5c01536e
...
@@ -5,12 +5,16 @@ import cn.hutool.core.map.MapBuilder;
...
@@ -5,12 +5,16 @@ import cn.hutool.core.map.MapBuilder;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.github.pagehelper.util.StringUtil
;
import
com.yeejoin.amos.boot.biz.common.bo.CompanyBo
;
import
com.yeejoin.amos.boot.biz.common.bo.CompanyBo
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
import
com.yeejoin.amos.boot.biz.common.utils.RedisKey
;
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.jg.api.dto.*
;
import
com.yeejoin.amos.boot.module.jg.api.dto.*
;
import
com.yeejoin.amos.boot.module.jg.api.entity.*
;
import
com.yeejoin.amos.boot.module.jg.api.entity.JgEquipTransfer
;
import
com.yeejoin.amos.boot.module.jg.api.entity.JgEquipTransferEq
;
import
com.yeejoin.amos.boot.module.jg.api.entity.JgMaintainNotice
;
import
com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum
;
import
com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum
;
import
com.yeejoin.amos.boot.module.jg.api.mapper.JgEquipTransferEqMapper
;
import
com.yeejoin.amos.boot.module.jg.api.mapper.JgEquipTransferEqMapper
;
import
com.yeejoin.amos.boot.module.jg.api.mapper.JgEquipTransferMapper
;
import
com.yeejoin.amos.boot.module.jg.api.mapper.JgEquipTransferMapper
;
...
@@ -22,24 +26,30 @@ import com.yeejoin.amos.boot.module.ymt.api.common.BaseException;
...
@@ -22,24 +26,30 @@ import com.yeejoin.amos.boot.module.ymt.api.common.BaseException;
import
com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum
;
import
com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum
;
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.systemctl.model.TaskV2Model
;
import
com.yeejoin.amos.feign.systemctl.model.TaskV2Model
;
import
com.yeejoin.amos.feign.workflow.model.*
;
import
com.yeejoin.amos.feign.workflow.model.ActWorkflowBatchDTO
;
import
com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO
;
import
com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO
;
import
com.yeejoin.amos.feign.workflow.model.TaskResultDTO
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.
springframework.context.annotation.Lazy
;
import
org.
redisson.api.RLock
;
import
org.
springframework.util.StringUtils
;
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.context.annotation.Lazy
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.StringUtils
;
import
org.typroject.tyboot.core.foundation.context.RequestContext
;
import
org.typroject.tyboot.core.foundation.context.RequestContext
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
org.springframework.stereotype.Service
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
org.typroject.tyboot.core.restful.exception.instance.BadRequest
;
import
org.typroject.tyboot.core.restful.exception.instance.BadRequest
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
java.util.stream.IntStream
;
import
java.util.stream.IntStream
;
import
java.util.stream.Stream
;
import
java.util.stream.Stream
;
...
@@ -66,6 +76,10 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
...
@@ -66,6 +76,10 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
@Lazy
@Lazy
private
final
CommonServiceImpl
commonService
;
private
final
CommonServiceImpl
commonService
;
@Autowired
private
RedissonClient
redissonClient
;
/**
/**
* 保存和保存并提交
* 保存和保存并提交
*
*
...
@@ -101,15 +115,15 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
...
@@ -101,15 +115,15 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
JgEquipTransferEq
jgEquipTransferEq
=
buildJgEquipTransferEq
(
obj
,
applyNo
);
JgEquipTransferEq
jgEquipTransferEq
=
buildJgEquipTransferEq
(
obj
,
applyNo
);
JgEquipTransfer
transfer
=
buildJgEquipTransfer
(
model
,
applyNo
,
reginParams
,
submitType
,
workflowResultList
,
i
);
JgEquipTransfer
transfer
=
buildJgEquipTransfer
(
model
,
applyNo
,
reginParams
,
submitType
,
workflowResultList
,
i
);
transfer
.
setSupervisoryCode
(
String
.
valueOf
(
obj
.
get
(
"SUPERVISORY_CODE"
)));
transfer
.
setSupervisoryCode
(
String
.
valueOf
(
obj
.
get
(
"SUPERVISORY_CODE"
)));
transfer
.
setEquList
(
Objects
.
toString
(
obj
.
get
(
"EQU_LIST"
),
""
));
transfer
.
setEquList
(
Objects
.
toString
(
obj
.
get
(
"EQU_LIST"
),
""
));
transfer
.
setEquDefine
(
Objects
.
toString
(
obj
.
get
(
"EQU_DEFINE"
),
""
));
transfer
.
setEquDefine
(
Objects
.
toString
(
obj
.
get
(
"EQU_DEFINE"
),
""
));
transfer
.
setEquCategory
(
Objects
.
toString
(
obj
.
get
(
"EQU_CATEGORY"
),
""
));
transfer
.
setEquCategory
(
Objects
.
toString
(
obj
.
get
(
"EQU_CATEGORY"
),
""
));
transfer
.
setProductName
(
Objects
.
toString
(
obj
.
get
(
"PRODUCT_NAME"
),
""
));
transfer
.
setProductName
(
Objects
.
toString
(
obj
.
get
(
"PRODUCT_NAME"
),
""
));
transfer
.
setUseRegistCode
(
Objects
.
toString
(
obj
.
get
(
"USE_ORG_CODE"
),
""
));
transfer
.
setUseRegistCode
(
Objects
.
toString
(
obj
.
get
(
"USE_ORG_CODE"
),
""
));
transfer
.
setUseRegistCode
(
Objects
.
toString
(
obj
.
get
(
"USE_ORG_CODE"
),
""
));
transfer
.
setUseInnerCode
(
Objects
.
toString
(
obj
.
get
(
"USE_INNER_CODE"
),
""
));
transfer
.
setUseRegistCode
(
Objects
.
toString
(
obj
.
get
(
"USE_ORG_CODE"
),
""
));
transfer
.
setEquAddress
(
Objects
.
toString
(
obj
.
get
(
"ADDRESS"
),
""
));
transfer
.
setUseInnerCode
(
Objects
.
toString
(
obj
.
get
(
"USE_INNER_CODE"
),
""
));
transfer
.
setEquCode
(
Objects
.
toString
(
obj
.
get
(
"EQU_CODE"
),
""
));
transfer
.
setEquAddress
(
Objects
.
toString
(
obj
.
get
(
"ADDRESS"
),
""
));
transfer
.
setEquCode
(
Objects
.
toString
(
obj
.
get
(
"EQU_CODE"
),
""
));
transferList
.
add
(
transfer
);
transferList
.
add
(
transfer
);
equipTransferEqList
.
add
(
jgEquipTransferEq
);
equipTransferEqList
.
add
(
jgEquipTransferEq
);
});
});
...
@@ -117,18 +131,27 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
...
@@ -117,18 +131,27 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
baseMapper
.
insertBatchSomeColumn
(
transferList
);
baseMapper
.
insertBatchSomeColumn
(
transferList
);
if
(
SUBMIT_TYPE_FLOW
.
equals
(
submitType
))
{
if
(
SUBMIT_TYPE_FLOW
.
equals
(
submitType
))
{
this
.
buildTask
(
transferList
,
workflowResultList
);
this
.
buildTask
(
transferList
,
workflowResultList
);
}
else
{
}
else
{
//批量暂存
//批量暂存
this
.
saveTempTransfer
(
transferList
);
this
.
saveTempTransfer
(
transferList
);
}
}
List
<
JgEquipTransferEq
>
jgEquipTransferEqList
=
this
.
buildJgEquipTransferEqList
(
equipTransferEqList
,
transferList
);
List
<
JgEquipTransferEq
>
jgEquipTransferEqList
=
this
.
buildJgEquipTransferEqList
(
equipTransferEqList
,
transferList
);
jgEquipTransferEqMapper
.
insertBatchSomeColumn
(
jgEquipTransferEqList
);
jgEquipTransferEqMapper
.
insertBatchSomeColumn
(
jgEquipTransferEqList
);
this
.
updateRedisBatch
(
transferList
);
return
transferList
;
return
transferList
;
}
}
private
void
updateRedisBatch
(
List
<
JgEquipTransfer
>
transferList
)
{
transferList
.
stream
().
filter
(
n
->
StringUtil
.
isNotEmpty
(
n
.
getInstanceId
())).
forEach
(
jgEquipTransfer
->
{
commonService
.
saveExecuteFlowData2Redis
(
jgEquipTransfer
.
getInstanceId
(),
this
.
buildInstanceRuntimeData
(
jgEquipTransfer
));
});
}
/**
/**
* 批量暂存
* 批量暂存
*
* @param transferList 移交信息
* @param transferList 移交信息
*/
*/
private
void
saveTempTransfer
(
List
<
JgEquipTransfer
>
transferList
)
{
private
void
saveTempTransfer
(
List
<
JgEquipTransfer
>
transferList
)
{
...
@@ -146,7 +169,7 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
...
@@ -146,7 +169,7 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
.
taskContent
(
String
.
format
(
"来自%s【%s】的业务办理,【申请单号:%s】"
,
item
.
getEquList
(),
Objects
.
toString
(
item
.
getSupervisoryCode
(),
""
),
item
.
getApplyNo
()))
.
taskContent
(
String
.
format
(
"来自%s【%s】的业务办理,【申请单号:%s】"
,
item
.
getEquList
(),
Objects
.
toString
(
item
.
getSupervisoryCode
(),
""
),
item
.
getApplyNo
()))
.
taskCode
(
item
.
getApplyNo
())
.
taskCode
(
item
.
getApplyNo
())
.
taskType
(
BusinessTypeEnum
.
JG_EQUIPMENT_HANDOVER
.
getCode
())
.
taskType
(
BusinessTypeEnum
.
JG_EQUIPMENT_HANDOVER
.
getCode
())
.
relationId
(
item
.
getSequenceNbr
()
+
""
)
.
relationId
(
item
.
getSequenceNbr
()
+
""
)
.
build
();
.
build
();
}
}
...
@@ -163,7 +186,7 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
...
@@ -163,7 +186,7 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
.
put
(
"flowStatus"
,
statusEnum
.
getCode
())
.
put
(
"flowStatus"
,
statusEnum
.
getCode
())
.
put
(
"flowStatusLabel"
,
statusEnum
.
getName
())
.
put
(
"flowStatusLabel"
,
statusEnum
.
getName
())
.
put
(
"relationId"
,
transfer
.
getInstanceId
())
.
put
(
"relationId"
,
transfer
.
getInstanceId
())
.
put
(
"model"
,
transfer
)
.
put
(
"model"
,
transfer
)
.
build
());
.
build
());
}
}
...
@@ -248,8 +271,9 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
...
@@ -248,8 +271,9 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
*/
*/
@Transactional
(
rollbackFor
=
{
Exception
.
class
,
BaseException
.
class
})
@Transactional
(
rollbackFor
=
{
Exception
.
class
,
BaseException
.
class
})
public
JgEquipTransferDto
updateEquipTransfer
(
String
submitType
,
JgEquipTransferDto
equipTransferDto
,
String
op
)
{
public
JgEquipTransferDto
updateEquipTransfer
(
String
submitType
,
JgEquipTransferDto
equipTransferDto
,
String
op
)
{
if
(
Objects
.
isNull
(
equipTransferDto
)
||
StringUtils
.
isEmpty
(
submitType
))
if
(
Objects
.
isNull
(
equipTransferDto
)
||
StringUtils
.
isEmpty
(
submitType
))
{
throw
new
IllegalArgumentException
(
"参数不能为空"
);
throw
new
IllegalArgumentException
(
"参数不能为空"
);
}
this
.
convertField
(
equipTransferDto
);
this
.
convertField
(
equipTransferDto
);
JgEquipTransfer
transfer
=
this
.
getById
(
equipTransferDto
.
getSequenceNbr
());
JgEquipTransfer
transfer
=
this
.
getById
(
equipTransferDto
.
getSequenceNbr
());
...
@@ -284,7 +308,7 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
...
@@ -284,7 +308,7 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
updateById
(
transfer
);
updateById
(
transfer
);
//删除暂存
//删除暂存
commonService
.
deleteTaskModel
(
transfer
.
getSequenceNbr
()
+
""
);
commonService
.
deleteTaskModel
(
transfer
.
getSequenceNbr
()
+
""
);
// 如果为保存并提交,则创建代办
// 如果为保存并提交,则创建代办
this
.
buildTask
(
Collections
.
singletonList
(
transfer
),
Collections
.
singletonList
(
workflowResultDto
));
this
.
buildTask
(
Collections
.
singletonList
(
transfer
),
Collections
.
singletonList
(
workflowResultDto
));
...
@@ -323,6 +347,7 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
...
@@ -323,6 +347,7 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
// 创建新的代办
// 创建新的代办
this
.
createNewTodo
(
transfer
,
workflowResultDto
,
taskV2Model
,
FlowStatusEnum
.
TO_BE_PROCESSED
);
this
.
createNewTodo
(
transfer
,
workflowResultDto
,
taskV2Model
,
FlowStatusEnum
.
TO_BE_PROCESSED
);
}
}
commonService
.
saveExecuteFlowData2Redis
(
transfer
.
getInstanceId
(),
this
.
buildInstanceRuntimeData
(
transfer
));
}
else
{
}
else
{
JgEquipTransfer
equipTransfer
=
new
JgEquipTransfer
();
JgEquipTransfer
equipTransfer
=
new
JgEquipTransfer
();
BeanUtils
.
copyProperties
(
equipTransferDto
,
equipTransfer
);
BeanUtils
.
copyProperties
(
equipTransferDto
,
equipTransfer
);
...
@@ -338,79 +363,105 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
...
@@ -338,79 +363,105 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
* @param op 通过或驳回
* @param op 通过或驳回
*/
*/
public
void
accept
(
JgEquipTransferDto
jgEquipTransferDto
,
String
op
)
{
public
void
accept
(
JgEquipTransferDto
jgEquipTransferDto
,
String
op
)
{
ReginParams
reginParams
=
JSONObject
.
parseObject
(
redisUtils
.
get
(
RedisKey
.
buildReginKey
(
RequestContext
.
getExeUserId
(),
RequestContext
.
getToken
())).
toString
(),
ReginParams
.
class
);
String
instanceId
=
jgEquipTransferDto
.
getInstanceId
();
JgEquipTransfer
jgEquipTransfer
=
baseMapper
.
selectById
(
jgEquipTransferDto
.
getSequenceNbr
());
String
nextTaskId
=
jgEquipTransferDto
.
getNextTaskId
();
// 检查实际状态是否不等于期望状态
String
lockKey
=
CommonServiceImpl
.
buildJgExecuteLockKey
(
instanceId
);
commonService
.
checkExpectedStatus
(
jgEquipTransfer
.
getApplyStatus
());
RLock
lock
=
redissonClient
.
getLock
(
lockKey
);
try
{
TaskResultDTO
workDto
=
new
TaskResultDTO
();
boolean
isLocked
=
lock
.
tryLock
(
0
,
180
,
TimeUnit
.
SECONDS
);
workDto
.
setResultCode
(
"approvalStatus"
);
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
workDto
.
setTaskId
(
jgEquipTransfer
.
getNextTaskId
());
if
(!
isLocked
)
{
HashMap
<
String
,
Object
>
commMap
=
new
HashMap
<>();
throw
new
BadRequest
(
"当前流程已经被执行!"
);
if
(
jgEquipTransfer
.
getApplyStatus
().
equals
(
"6614"
)
||
jgEquipTransfer
.
getApplyStatus
().
equals
(
"6615"
))
{
}
commMap
.
put
(
"approvalStatus"
,
"提交"
);
// 流程执行时,状态及权限校验
}
else
{
commonService
.
checkForExecuteFlow
(
nextTaskId
,
instanceId
);
commMap
.
put
(
"approvalStatus"
,
op
);
ReginParams
reginParams
=
JSONObject
.
parseObject
(
redisUtils
.
get
(
RedisKey
.
buildReginKey
(
RequestContext
.
getExeUserId
(),
RequestContext
.
getToken
())).
toString
(),
ReginParams
.
class
);
}
JgEquipTransfer
jgEquipTransfer
=
baseMapper
.
selectById
(
jgEquipTransferDto
.
getSequenceNbr
());
workDto
.
setNextExecuteUserCompanyCode
(
"1"
.
equals
(
op
)
?
jgEquipTransfer
.
getUseUnitCreditCode
()
:
jgEquipTransfer
.
getInstallUnitCreditCode
());
workDto
.
setVariable
(
commMap
);
TaskResultDTO
workDto
=
new
TaskResultDTO
();
workDto
.
setComment
(
jgEquipTransferDto
.
getProcessAdvice
());
workDto
.
setResultCode
(
"approvalStatus"
);
ProcessTaskDTO
processTaskDTO
=
cmWorkflowService
.
completeOrReject
(
jgEquipTransfer
.
getNextTaskId
(),
workDto
,
op
);
workDto
.
setTaskId
(
jgEquipTransfer
.
getNextTaskId
());
// 提取节点等信息
HashMap
<
String
,
Object
>
commMap
=
new
HashMap
<>();
WorkflowResultDto
workflowResultDto
=
commonService
.
buildWorkFlowInfo
(
Collections
.
singletonList
(
processTaskDTO
)).
get
(
0
);
if
(
jgEquipTransfer
.
getApplyStatus
().
equals
(
"6614"
)
||
jgEquipTransfer
.
getApplyStatus
().
equals
(
"6615"
))
{
jgEquipTransfer
.
setPromoter
(
reginParams
.
getUserModel
().
getUserId
());
commMap
.
put
(
"approvalStatus"
,
"提交"
);
jgEquipTransfer
.
setProcessAdvice
(
jgEquipTransferDto
.
getProcessAdvice
());
JgEquipTransferEq
jgEquipTransferEq
=
jgEquipTransferEqMapper
.
selectOne
(
Wrappers
.<
JgEquipTransferEq
>
lambdaQuery
().
select
(
JgEquipTransferEq:
:
getEquId
)
.
eq
(
JgEquipTransferEq:
:
getEquipTransferId
,
jgEquipTransferDto
.
getSequenceNbr
()));
TaskV2Model
taskV2Model
;
if
(
"0"
.
equals
(
op
))
{
if
(
StringUtils
.
isEmpty
(
workflowResultDto
.
getNextExecutorRoleIds
()))
{
jgEquipTransfer
.
setApplyStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
()));
jgEquipTransfer
.
setPromoter
(
""
);
jgEquipTransfer
.
setAcceptDate
(
new
Date
());
if
(
jgEquipTransferEq
!=
null
)
{
Map
<
String
,
Map
<
String
,
Object
>>
resultMap
=
MapBuilder
.<
String
,
Map
<
String
,
Object
>>
create
()
.
put
(
jgEquipTransferEq
.
getEquId
(),
MapBuilder
.<
String
,
Object
>
create
()
.
put
(
"USC_UNIT_NAME"
,
jgEquipTransfer
.
getInstallUnitName
())
.
put
(
"USC_UNIT_CREDIT_CODE"
,
jgEquipTransfer
.
getInstallUnitCreditCode
())
.
build
())
.
build
();
tzsServiceFeignClient
.
commonUpdateEsDataByIds
(
resultMap
);
}
// 上个代办改为已办
this
.
updateLastTodo
(
jgEquipTransfer
,
FlowStatusEnum
.
TO_BE_FINISHED
);
}
else
{
}
else
{
jgEquipTransfer
.
setNextExecuteIds
(
workflowResultDto
.
getNextExecutorRoleIds
());
commMap
.
put
(
"approvalStatus"
,
op
);
if
(!
ObjectUtils
.
isEmpty
(
jgEquipTransfer
.
getInstanceStatus
()))
{
}
jgEquipTransfer
.
setInstanceStatus
(
jgEquipTransfer
.
getInstanceStatus
()
+
","
+
workflowResultDto
.
getNextExecutorRoleIds
());
workDto
.
setNextExecuteUserCompanyCode
(
"1"
.
equals
(
op
)
?
jgEquipTransfer
.
getUseUnitCreditCode
()
:
jgEquipTransfer
.
getInstallUnitCreditCode
());
workDto
.
setVariable
(
commMap
);
workDto
.
setComment
(
jgEquipTransferDto
.
getProcessAdvice
());
ProcessTaskDTO
processTaskDTO
=
cmWorkflowService
.
completeOrReject
(
jgEquipTransfer
.
getNextTaskId
(),
workDto
,
op
);
// 提取节点等信息
WorkflowResultDto
workflowResultDto
=
commonService
.
buildWorkFlowInfo
(
Collections
.
singletonList
(
processTaskDTO
)).
get
(
0
);
jgEquipTransfer
.
setPromoter
(
reginParams
.
getUserModel
().
getUserId
());
jgEquipTransfer
.
setProcessAdvice
(
jgEquipTransferDto
.
getProcessAdvice
());
JgEquipTransferEq
jgEquipTransferEq
=
jgEquipTransferEqMapper
.
selectOne
(
Wrappers
.<
JgEquipTransferEq
>
lambdaQuery
().
select
(
JgEquipTransferEq:
:
getEquId
)
.
eq
(
JgEquipTransferEq:
:
getEquipTransferId
,
jgEquipTransferDto
.
getSequenceNbr
()));
TaskV2Model
taskV2Model
;
if
(
"0"
.
equals
(
op
))
{
if
(
StringUtils
.
isEmpty
(
workflowResultDto
.
getNextExecutorRoleIds
()))
{
jgEquipTransfer
.
setApplyStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_FINISHED
.
getCode
()));
jgEquipTransfer
.
setPromoter
(
""
);
jgEquipTransfer
.
setAcceptDate
(
new
Date
());
if
(
jgEquipTransferEq
!=
null
)
{
Map
<
String
,
Map
<
String
,
Object
>>
resultMap
=
MapBuilder
.<
String
,
Map
<
String
,
Object
>>
create
()
.
put
(
jgEquipTransferEq
.
getEquId
(),
MapBuilder
.<
String
,
Object
>
create
()
.
put
(
"USC_UNIT_NAME"
,
jgEquipTransfer
.
getInstallUnitName
())
.
put
(
"USC_UNIT_CREDIT_CODE"
,
jgEquipTransfer
.
getInstallUnitCreditCode
())
.
build
())
.
build
();
tzsServiceFeignClient
.
commonUpdateEsDataByIds
(
resultMap
);
}
// 上个代办改为已办
this
.
updateLastTodo
(
jgEquipTransfer
,
FlowStatusEnum
.
TO_BE_FINISHED
);
}
else
{
}
else
{
jgEquipTransfer
.
setInstanceStatus
(
workflowResultDto
.
getNextExecutorRoleIds
());
jgEquipTransfer
.
setNextExecuteIds
(
workflowResultDto
.
getNextExecutorRoleIds
());
if
(!
ObjectUtils
.
isEmpty
(
jgEquipTransfer
.
getInstanceStatus
()))
{
jgEquipTransfer
.
setInstanceStatus
(
jgEquipTransfer
.
getInstanceStatus
()
+
","
+
workflowResultDto
.
getNextExecutorRoleIds
());
}
else
{
jgEquipTransfer
.
setInstanceStatus
(
workflowResultDto
.
getNextExecutorRoleIds
());
}
jgEquipTransfer
.
setPromoter
(
RequestContext
.
getExeUserId
());
jgEquipTransfer
.
setApplyStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_PROCESSED
.
getCode
()));
jgEquipTransfer
.
setNextTaskId
(
workflowResultDto
.
getNextTaskId
());
jgEquipTransfer
.
setInstanceId
(
workflowResultDto
.
getInstanceId
());
// 上个代办改为已办
taskV2Model
=
this
.
updateLastTodo
(
jgEquipTransfer
,
FlowStatusEnum
.
TO_BE_FINISHED
);
// 创建新的代办
this
.
createNewTodo
(
jgEquipTransfer
,
workflowResultDto
,
taskV2Model
,
FlowStatusEnum
.
TO_BE_PROCESSED
);
}
}
jgEquipTransfer
.
setPromoter
(
RequestContext
.
getExeUserId
());
}
else
{
jgEquipTransfer
.
setApplyStatus
(
String
.
valueOf
(
FlowStatusEnum
.
TO_BE_PROCESSED
.
getCode
()));
//驳回
jgEquipTransfer
.
setPromoter
(
""
);
jgEquipTransfer
.
setApplyStatus
(
String
.
valueOf
(
FlowStatusEnum
.
REJECTED
.
getCode
()));
jgEquipTransfer
.
setSupervisoryCode
(
jgEquipTransferDto
.
getSupervisoryCode
());
jgEquipTransfer
.
setEquList
(
jgEquipTransferDto
.
getEquList
());
jgEquipTransfer
.
setNextTaskId
(
workflowResultDto
.
getNextTaskId
());
jgEquipTransfer
.
setNextTaskId
(
workflowResultDto
.
getNextTaskId
());
jgEquipTransfer
.
setInstanceId
(
workflowResultDto
.
getInstanceId
());
jgEquipTransfer
.
setNextExecuteUserIds
(
workflowResultDto
.
getNextExecutorUserIds
());
// 上个代办改为已办
//jgEquipTransfer.setInstanceId(workflowResultDto.getInstanceId());
taskV2Model
=
this
.
updateLastTodo
(
jgEquipTransfer
,
FlowStatusEnum
.
TO_BE_FINISHED
);
// 上个代办改为驳回
// 创建新的代办
taskV2Model
=
this
.
updateLastTodo
(
jgEquipTransfer
,
FlowStatusEnum
.
REJECTED
);
this
.
createNewTodo
(
jgEquipTransfer
,
workflowResultDto
,
taskV2Model
,
FlowStatusEnum
.
TO_BE_PROCESSED
);
this
.
createNewTodo
(
jgEquipTransfer
,
workflowResultDto
,
taskV2Model
,
FlowStatusEnum
.
REJECTED
);
}
updateById
(
jgEquipTransfer
);
commonService
.
saveExecuteFlowData2Redis
(
instanceId
,
this
.
buildInstanceRuntimeData
(
jgEquipTransfer
));
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
lock
.
isHeldByCurrentThread
())
{
lock
.
unlock
();
}
}
}
else
{
//驳回
jgEquipTransfer
.
setPromoter
(
""
);
jgEquipTransfer
.
setApplyStatus
(
String
.
valueOf
(
FlowStatusEnum
.
REJECTED
.
getCode
()));
jgEquipTransfer
.
setSupervisoryCode
(
jgEquipTransferDto
.
getSupervisoryCode
());
jgEquipTransfer
.
setEquList
(
jgEquipTransferDto
.
getEquList
());
jgEquipTransfer
.
setNextTaskId
(
workflowResultDto
.
getNextTaskId
());
jgEquipTransfer
.
setNextExecuteUserIds
(
workflowResultDto
.
getNextExecutorUserIds
());
//jgEquipTransfer.setInstanceId(workflowResultDto.getInstanceId());
// 上个代办改为驳回
taskV2Model
=
this
.
updateLastTodo
(
jgEquipTransfer
,
FlowStatusEnum
.
REJECTED
);
this
.
createNewTodo
(
jgEquipTransfer
,
workflowResultDto
,
taskV2Model
,
FlowStatusEnum
.
REJECTED
);
}
}
updateById
(
jgEquipTransfer
);
}
public
InstanceRuntimeData
buildInstanceRuntimeData
(
JgEquipTransfer
jgEquipTransfer
)
{
return
InstanceRuntimeData
.
builder
()
.
nextExecuteUserIds
(
jgEquipTransfer
.
getNextExecuteUserIds
())
.
promoter
(
jgEquipTransfer
.
getPromoter
())
.
nextTaskId
(
jgEquipTransfer
.
getNextTaskId
())
.
build
();
}
}
/**
/**
...
@@ -419,11 +470,21 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
...
@@ -419,11 +470,21 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
* @param equipTransferInfo 设备移交信息
* @param equipTransferInfo 设备移交信息
*/
*/
public
void
cancel
(
JgEquipTransferDto
equipTransferInfo
)
{
public
void
cancel
(
JgEquipTransferDto
equipTransferInfo
)
{
// 查询装备移交信息
String
instanceId
=
equipTransferInfo
.
getInstanceId
();
JgEquipTransfer
equipTransfer
=
baseMapper
.
selectById
(
equipTransferInfo
.
getSequenceNbr
());
String
nextTaskId
=
equipTransferInfo
.
getNextTaskId
();
if
(
equipTransfer
!=
null
)
{
String
lockKey
=
CommonServiceImpl
.
buildJgExecuteLockKey
(
instanceId
);
// 检查实际状态是否不等于期望状态
RLock
lock
=
redissonClient
.
getLock
(
lockKey
);
commonService
.
checkExpectedStatus
(
equipTransfer
.
getApplyStatus
());
try
{
boolean
isLocked
=
lock
.
tryLock
(
0
,
180
,
TimeUnit
.
SECONDS
);
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
if
(!
isLocked
)
{
throw
new
BadRequest
(
"当前流程已经被执行!"
);
}
// 流程执行时,状态及权限校验
commonService
.
checkForRevocationFlow
(
nextTaskId
,
instanceId
);
// 查询装备移交信息
JgEquipTransfer
equipTransfer
=
baseMapper
.
selectById
(
equipTransferInfo
.
getSequenceNbr
());
// 回滚工作流
// 回滚工作流
ProcessTaskDTO
processTaskDTO
=
cmWorkflowService
.
rollBack
(
equipTransferInfo
.
getInstanceId
());
ProcessTaskDTO
processTaskDTO
=
cmWorkflowService
.
rollBack
(
equipTransferInfo
.
getInstanceId
());
WorkflowResultDto
workflowResultDto
=
commonService
.
buildWorkFlowInfo
(
Collections
.
singletonList
(
processTaskDTO
)).
get
(
0
);
WorkflowResultDto
workflowResultDto
=
commonService
.
buildWorkFlowInfo
(
Collections
.
singletonList
(
processTaskDTO
)).
get
(
0
);
...
@@ -439,8 +500,16 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
...
@@ -439,8 +500,16 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
jsonObject
.
put
(
"flowStatus"
,
FlowStatusEnum
.
ROLLBACK
.
getCode
());
jsonObject
.
put
(
"flowStatus"
,
FlowStatusEnum
.
ROLLBACK
.
getCode
());
jsonObject
.
put
(
"flowStatusLabel"
,
FlowStatusEnum
.
ROLLBACK
.
getName
());
jsonObject
.
put
(
"flowStatusLabel"
,
FlowStatusEnum
.
ROLLBACK
.
getName
());
commonService
.
rollbackTask
(
equipTransfer
.
getInstanceId
(),
jsonObject
);
commonService
.
rollbackTask
(
equipTransfer
.
getInstanceId
(),
jsonObject
);
commonService
.
saveExecuteFlowData2Redis
(
instanceId
,
this
.
buildInstanceRuntimeData
(
equipTransfer
));
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
lock
.
isHeldByCurrentThread
())
{
lock
.
unlock
();
}
}
}
}
}
private
String
getStringFromMap
(
Map
<
String
,
Object
>
map
,
String
key
)
{
private
String
getStringFromMap
(
Map
<
String
,
Object
>
map
,
String
key
)
{
return
map
.
getOrDefault
(
key
,
""
).
toString
();
return
map
.
getOrDefault
(
key
,
""
).
toString
();
}
}
...
@@ -481,8 +550,9 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
...
@@ -481,8 +550,9 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
public
Map
<
String
,
Object
>
queryBySequenceNbr
(
Long
sequenceNbr
)
{
public
Map
<
String
,
Object
>
queryBySequenceNbr
(
Long
sequenceNbr
)
{
JgEquipTransfer
equipTransfer
=
baseMapper
.
selectById
(
sequenceNbr
);
JgEquipTransfer
equipTransfer
=
baseMapper
.
selectById
(
sequenceNbr
);
if
(
Objects
.
isNull
(
equipTransfer
))
if
(
Objects
.
isNull
(
equipTransfer
))
{
return
null
;
return
null
;
}
String
[]
fields
=
{
"productPhoto"
,
"designDoc"
,
"designStandard"
,
"factoryStandard"
,
String
[]
fields
=
{
"productPhoto"
,
"designDoc"
,
"designStandard"
,
"factoryStandard"
,
"productQualityYieldProve"
,
"insUseMaintainExplain"
,
"inspectReport"
,
"productQualityYieldProve"
,
"insUseMaintainExplain"
,
"inspectReport"
,
...
@@ -503,7 +573,7 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
...
@@ -503,7 +573,7 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
handleJsonArrayFields
(
equipMap
,
fields
);
handleJsonArrayFields
(
equipMap
,
fields
);
return
Stream
.
concat
(
equipTransferInfo
.
entrySet
().
stream
(),
return
Stream
.
concat
(
equipTransferInfo
.
entrySet
().
stream
(),
equipMap
.
entrySet
().
stream
())
equipMap
.
entrySet
().
stream
())
.
filter
(
entry
->
entry
.
getValue
()
!=
null
)
.
filter
(
entry
->
entry
.
getValue
()
!=
null
)
.
collect
(
Collectors
.
toMap
(
Map
.
Entry
::
getKey
,
Map
.
Entry
::
getValue
,
(
existing
,
replacement
)
->
existing
));
.
collect
(
Collectors
.
toMap
(
Map
.
Entry
::
getKey
,
Map
.
Entry
::
getValue
,
(
existing
,
replacement
)
->
existing
));
}
}
...
@@ -562,8 +632,9 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
...
@@ -562,8 +632,9 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
* @param model 设备信息
* @param model 设备信息
*/
*/
private
void
convertField
(
JgEquipTransferDto
model
)
{
private
void
convertField
(
JgEquipTransferDto
model
)
{
if
(
null
==
model
)
if
(
null
==
model
)
{
return
;
return
;
}
String
installUnitId
=
model
.
getInstallUnitCreditCode
();
String
installUnitId
=
model
.
getInstallUnitCreditCode
();
if
(!
ObjectUtils
.
isEmpty
(
installUnitId
))
{
if
(!
ObjectUtils
.
isEmpty
(
installUnitId
))
{
String
[]
installUnitIdList
=
installUnitId
.
split
(
"_"
);
String
[]
installUnitIdList
=
installUnitId
.
split
(
"_"
);
...
@@ -598,7 +669,7 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
...
@@ -598,7 +669,7 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
dto
.
setPromoter
(
reginParams
.
getUserModel
().
getUserId
());
dto
.
setPromoter
(
reginParams
.
getUserModel
().
getUserId
());
dto
.
setNextTaskId
(
workflowResult
.
getNextTaskId
());
dto
.
setNextTaskId
(
workflowResult
.
getNextTaskId
());
dto
.
setNextExecuteUserIds
(
workflowResult
.
getNextExecutorUserIds
());
dto
.
setNextExecuteUserIds
(
workflowResult
.
getNextExecutorUserIds
());
}
else
{
}
else
{
dto
.
setNextExecuteUserIds
(
RequestContext
.
getExeUserId
());
dto
.
setNextExecuteUserIds
(
RequestContext
.
getExeUserId
());
}
}
if
(!
CollectionUtils
.
isEmpty
(
workflowResultList
))
{
if
(!
CollectionUtils
.
isEmpty
(
workflowResultList
))
{
...
...
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