add 增量保存人员信息
This commit is contained in:
+50
-1
@@ -16,6 +16,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -23,11 +24,11 @@ import java.util.Map;
|
|||||||
*@date 2023-09-26 15:12
|
*@date 2023-09-26 15:12
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public class ProcessNodeLinkService extends ServiceImpl<ProcessNodeLinkMapper, ProcessNodeLink> {
|
public class ProcessNodeLinkService extends ServiceImpl<ProcessNodeLinkMapper, ProcessNodeLink> {
|
||||||
@Resource
|
@Resource
|
||||||
private ProcessNodeService processNodeService;
|
private ProcessNodeService processNodeService;
|
||||||
|
|
||||||
@Transactional
|
|
||||||
public void saveNodeUserLink(String processDefinitionId, String processInstanceId, Map<String, Object> map) {
|
public void saveNodeUserLink(String processDefinitionId, String processInstanceId, Map<String, Object> map) {
|
||||||
LambdaQueryWrapper<ProcessNode> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<ProcessNode> wrapper = new LambdaQueryWrapper<>();
|
||||||
wrapper.eq(ProcessNode::getProcessDefinitionId,processDefinitionId);
|
wrapper.eq(ProcessNode::getProcessDefinitionId,processDefinitionId);
|
||||||
@@ -68,6 +69,54 @@ public class ProcessNodeLinkService extends ServiceImpl<ProcessNodeLinkMapper, P
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 增量保存人员信息
|
||||||
|
* @param processDefinitionId
|
||||||
|
* @param processInstanceId
|
||||||
|
* @param map
|
||||||
|
*/
|
||||||
|
public void incrementSaveNodeUserLink(String processDefinitionId, String processInstanceId, Map<String, Object> map) {
|
||||||
|
LambdaQueryWrapper<ProcessNode> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
wrapper.eq(ProcessNode::getProcessDefinitionId,processDefinitionId);
|
||||||
|
List<ProcessNode> processNodeList = processNodeService.list(wrapper);
|
||||||
|
List<ProcessNodeLink> processNodeLinks = new ArrayList<>();
|
||||||
|
for (ProcessNode processNode : processNodeList) {
|
||||||
|
String processNodeId = processNode.getId();
|
||||||
|
String variableType = processNode.getVariableType();
|
||||||
|
String variableName = processNode.getVariableName();
|
||||||
|
List<String> userIdList = new ArrayList<>();
|
||||||
|
if (map.containsKey(variableName)) {
|
||||||
|
String s = (String) map.get(variableName);
|
||||||
|
if (StrUtil.isNotBlank(s)) {
|
||||||
|
if (VariableTypeEnum.LIST.getName().equals(variableType)) {
|
||||||
|
userIdList.addAll(Arrays.asList(s.split(",")));
|
||||||
|
}else {
|
||||||
|
userIdList.add(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!userIdList.isEmpty()) {
|
||||||
|
//如果当前节点绑定人了,先查询之前绑定的,增量保存
|
||||||
|
LambdaQueryWrapper<ProcessNodeLink> wrapper1 = new LambdaQueryWrapper<>();
|
||||||
|
wrapper1.eq(ProcessNodeLink::getProcessNodeId,processNodeId);
|
||||||
|
wrapper1.eq(ProcessNodeLink::getProcessInstanceId,processInstanceId);
|
||||||
|
List<ProcessNodeLink> list = this.list(wrapper1);
|
||||||
|
List<String> distinctUserIdList = list.stream().map(ProcessNodeLink::getUserId).distinct().collect(Collectors.toList());
|
||||||
|
userIdList.removeAll(distinctUserIdList);
|
||||||
|
for (String userId : userIdList) {
|
||||||
|
ProcessNodeLink processNodeLink = new ProcessNodeLink();
|
||||||
|
processNodeLink.setProcessDefinitionId(processDefinitionId);
|
||||||
|
processNodeLink.setProcessNodeId(processNodeId);
|
||||||
|
processNodeLink.setProcessInstanceId(processInstanceId);
|
||||||
|
processNodeLink.setUserId(userId);
|
||||||
|
processNodeLinks.add(processNodeLink);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.saveBatch(processNodeLinks);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public List<ProcessNodeLink> selectByProcessInstanceId(String processInstanceId) {
|
public List<ProcessNodeLink> selectByProcessInstanceId(String processInstanceId) {
|
||||||
LambdaQueryWrapper<ProcessNodeLink> myQuery = Wrappers.lambdaQuery(ProcessNodeLink.class);
|
LambdaQueryWrapper<ProcessNodeLink> myQuery = Wrappers.lambdaQuery(ProcessNodeLink.class);
|
||||||
myQuery.eq(ProcessNodeLink::getProcessInstanceId, processInstanceId);
|
myQuery.eq(ProcessNodeLink::getProcessInstanceId, processInstanceId);
|
||||||
|
|||||||
Reference in New Issue
Block a user