package org.dromara.workflow.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import org.dromara.common.core.utils.StreamUtils; import org.dromara.workflow.domain.vo.WfFormManageVo; import org.dromara.workflow.service.IWfFormManageService; import org.springframework.stereotype.Service; import org.dromara.workflow.domain.vo.WfNodeConfigVo; import org.dromara.workflow.domain.WfNodeConfig; import org.dromara.workflow.mapper.WfNodeConfigMapper; import org.dromara.workflow.service.IWfNodeConfigService; import java.util.Collection; import java.util.List; /** * 节点配置Service业务层处理 * * @author may * @date 2024-03-30 */ @RequiredArgsConstructor @Service public class WfNodeConfigServiceImpl implements IWfNodeConfigService { private final WfNodeConfigMapper baseMapper; private final IWfFormManageService wfFormManageService; /** * 查询节点配置 */ @Override public WfNodeConfigVo queryById(Long id) { return baseMapper.selectVoById(id); } /** * 保存节点配置 */ @Override public Boolean saveOrUpdate(List list) { return baseMapper.insertOrUpdateBatch(list); } /** * 批量删除节点配置 */ @Override public Boolean deleteByIds(Collection ids) { return baseMapper.deleteBatchIds(ids) > 0; } @Override public Boolean deleteByDefIds(Collection ids) { return baseMapper.delete(new LambdaQueryWrapper().in(WfNodeConfig::getDefinitionId, ids)) > 0; } @Override public List selectByDefIds(Collection ids) { List wfNodeConfigVos = baseMapper.selectVoList(new LambdaQueryWrapper().in(WfNodeConfig::getDefinitionId, ids)); if (CollUtil.isNotEmpty(wfNodeConfigVos)) { List formIds = StreamUtils.toList(wfNodeConfigVos, WfNodeConfigVo::getFormId); List wfFormManageVos = wfFormManageService.queryByIds(formIds); for (WfNodeConfigVo wfNodeConfigVo : wfNodeConfigVos) { wfFormManageVos.stream().filter(e -> ObjectUtil.equals(e.getId(), wfNodeConfigVo.getFormId())).findFirst().ifPresent(wfNodeConfigVo::setWfFormManageVo); } } return wfNodeConfigVos; } }