add 增量保存人员信息

This commit is contained in:
lijiarao
2023-12-13 18:32:12 +08:00
parent 2c1ebd7bcc
commit 87a80db060
@@ -16,6 +16,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
@@ -23,11 +24,11 @@ import java.util.Map;
*@date 2023-09-26 15:12
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class ProcessNodeLinkService extends ServiceImpl<ProcessNodeLinkMapper, ProcessNodeLink> {
@Resource
private ProcessNodeService processNodeService;
@Transactional
public void saveNodeUserLink(String processDefinitionId, String processInstanceId, Map<String, Object> map) {
LambdaQueryWrapper<ProcessNode> wrapper = new LambdaQueryWrapper<>();
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) {
LambdaQueryWrapper<ProcessNodeLink> myQuery = Wrappers.lambdaQuery(ProcessNodeLink.class);
myQuery.eq(ProcessNodeLink::getProcessInstanceId, processInstanceId);