package jnpf.flowable.mapper; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.util.StringUtil; import com.github.yulichang.extension.mapping.wrapper.MappingQuery; import jnpf.base.mapper.SuperMapper; import jnpf.flowable.entity.CandidatesEntity; import jnpf.flowable.entity.OperatorEntity; import jnpf.flowable.model.util.FlowNature; import jnpf.util.RandomUtil; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** * 类的描述 * * @author JNPF@YinMai Info. Co., Ltd * @version 5.0.x * @since 2024/4/18 16:00 */ public interface CandidatesMapper extends SuperMapper { default List getList(String taskId, String nodeCode) { QueryWrapper queryWrapper = new QueryWrapper<>(); if (StringUtil.isNotEmpty(taskId)) { queryWrapper.lambda().eq(CandidatesEntity::getTaskId, taskId); } if (StringUtil.isNotEmpty(nodeCode)) { queryWrapper.lambda().eq(CandidatesEntity::getNodeCode, nodeCode); } return this.selectList(queryWrapper); } default List getListByCode(String taskId, String nodeCode) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(CandidatesEntity::getTaskId, taskId).eq(CandidatesEntity::getNodeCode, nodeCode); return this.selectList(queryWrapper); } default void deleteByCodes(String taskId, List nodeIds) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(CandidatesEntity::getTaskId, taskId); if (CollectionUtil.isNotEmpty(nodeIds)) { queryWrapper.lambda().in(CandidatesEntity::getNodeCode, nodeIds); } List list = this.selectList(queryWrapper); if (CollectionUtil.isNotEmpty(list)) { this.deleteByIds(list); } } default void delete(String taskId, List nodeIds, List userId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(CandidatesEntity::getTaskId, taskId).in(CandidatesEntity::getHandleId, userId); if (CollectionUtil.isNotEmpty(nodeIds)) { queryWrapper.lambda().in(CandidatesEntity::getNodeCode, nodeIds); } List list = this.selectList(queryWrapper); if (CollectionUtil.isNotEmpty(list)) { this.deleteByIds(list); } } default List getBranch(String taskId, String nodeCode) { List resList = new ArrayList<>(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(CandidatesEntity::getTaskId, taskId).eq(CandidatesEntity::getNodeCode, nodeCode) .eq(CandidatesEntity::getType, FlowNature.Branch); List list = this.selectList(queryWrapper); if (CollectionUtil.isNotEmpty(list)) { for (CandidatesEntity entity : list) { if (jnpf.util.StringUtil.isNotEmpty(entity.getCandidates())) { List branch = Arrays.stream(entity.getCandidates().split(",")).collect(Collectors.toList()); resList.addAll(branch); } } } return resList; } default void createBranch(List branchList, OperatorEntity operator) { if (CollectionUtil.isNotEmpty(branchList)) { this.deleteBranch(operator.getTaskId(), operator.getNodeCode()); CandidatesEntity entity = new CandidatesEntity(); entity.setId(RandomUtil.uuId()); entity.setTaskId(operator.getTaskId()); entity.setNodeCode(operator.getNodeCode()); entity.setOperatorId(operator.getId()); entity.setType(FlowNature.Branch); entity.setCandidates(String.join(",", branchList)); this.insert(entity); } } default void deleteBranch(String taskId, String nodeCode) { QueryWrapper wrapper = new MappingQuery<>(); wrapper.lambda().eq(CandidatesEntity::getTaskId, taskId).eq(CandidatesEntity::getNodeCode, nodeCode) .eq(CandidatesEntity::getType, FlowNature.Branch); this.delete(wrapper); } }