package jnpf.flowable.mapper; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.collect.ImmutableList; import jnpf.base.mapper.SuperMapper; import jnpf.constant.MsgCode; import jnpf.exception.WorkFlowException; import jnpf.flowable.entity.TemplateEntity; import jnpf.flowable.enums.TemplateStatueEnum; import jnpf.flowable.model.template.TemplatePagination; import jnpf.flowable.model.util.FlowNature; import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.List; public interface TemplateMapper extends SuperMapper { default List getListByCreUser(String creUser) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(TemplateEntity::getVisibleType, FlowNature.Authority); queryWrapper.lambda().eq(TemplateEntity::getCreatorUserId, creUser); return this.selectList(queryWrapper); } default List getList(List ids) { if (ids.isEmpty()) { return new ArrayList<>(); } QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().in(TemplateEntity::getId, ids).eq(TemplateEntity::getStatus, TemplateStatueEnum.up.getCode()); return this.selectList(queryWrapper); } default List getListByIds(List ids) { if (ids.isEmpty()) { return new ArrayList<>(); } QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().in(TemplateEntity::getId, ids); return this.selectList(queryWrapper); } default List getListOfHidden(List ids) { if (ids.isEmpty()) { return new ArrayList<>(); } QueryWrapper queryWrapper = new QueryWrapper<>(); List statusList = ImmutableList.of(TemplateStatueEnum.up.getCode(), TemplateStatueEnum.downContinue.getCode()); queryWrapper.lambda().in(TemplateEntity::getId, ids).in(TemplateEntity::getStatus, statusList); return this.selectList(queryWrapper); } default List getList(TemplatePagination pagination) { QueryWrapper queryWrapper = new QueryWrapper<>(); String keyword = pagination.getKeyword(); if (ObjectUtil.isNotEmpty(keyword)) { queryWrapper.lambda().and(t -> t.like(TemplateEntity::getEnCode, keyword).or().like(TemplateEntity::getFullName, keyword)); } String category = pagination.getCategory(); if (ObjectUtil.isNotEmpty(category)) { queryWrapper.lambda().eq(TemplateEntity::getCategory, category); } Integer type = pagination.getType(); if (ObjectUtil.isNotEmpty(type)) { queryWrapper.lambda().eq(TemplateEntity::getType, type); } Integer enabledMark = pagination.getEnabledMark(); if (ObjectUtil.isNotEmpty(enabledMark)) { queryWrapper.lambda().eq(TemplateEntity::getEnabledMark, enabledMark); } String systemId = pagination.getSystemId(); if (ObjectUtil.isNotEmpty(systemId)) { queryWrapper.lambda().eq(TemplateEntity::getSystemId, systemId); } queryWrapper.lambda().orderByAsc(TemplateEntity::getSortCode).orderByDesc(TemplateEntity::getCreatorTime); Page page = new Page<>(pagination.getCurrentPage(), pagination.getPageSize()); IPage userPage = this.selectPage(page, queryWrapper); return pagination.setData(userPage.getRecords(), page.getTotal()); } default TemplateEntity getInfo(String id) throws WorkFlowException { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(TemplateEntity::getId, id); TemplateEntity templateEntity = this.selectOne(queryWrapper); if (templateEntity == null) { throw new WorkFlowException(MsgCode.WF122.get()); } return templateEntity; } default boolean isExistByFullName(String fullName, String id, String systemId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(TemplateEntity::getFullName, fullName); if (!StringUtils.isEmpty(id)) { queryWrapper.lambda().ne(TemplateEntity::getId, id); } if (!StringUtils.isEmpty(systemId)) { queryWrapper.lambda().eq(TemplateEntity::getSystemId, systemId); } return this.selectCount(queryWrapper) > 0; } default boolean isExistByEnCode(String enCode, String id, String systemId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(TemplateEntity::getEnCode, enCode); if (!StringUtils.isEmpty(id)) { queryWrapper.lambda().ne(TemplateEntity::getId, id); } if (!StringUtils.isEmpty(systemId)) { queryWrapper.lambda().eq(TemplateEntity::getSystemId, systemId); } return this.selectCount(queryWrapper) > 0; } default boolean update(String id, TemplateEntity entity) throws WorkFlowException { if (isExistByFullName(entity.getFullName(), id, entity.getSystemId())) { throw new WorkFlowException(MsgCode.EXIST001.get()); } if (isExistByEnCode(entity.getEnCode(), id, entity.getSystemId())) { throw new WorkFlowException(MsgCode.EXIST002.get()); } entity.setId(id); return this.updateById(entity)>0; } }