package cn.cetc54.platform.base.serviceimpl; import cn.cetc54.platform.base.dao.DictDataDao; import cn.cetc54.platform.base.entity.DictData; import cn.cetc54.platform.base.service.DictDataService; import cn.cetc54.platform.core.common.constant.CommonConstant; import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.domain.Specification; import org.springframework.lang.Nullable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.persistence.criteria.*; import java.util.ArrayList; import java.util.List; /** * 字典数据接口实现 * @author Exrick */ @Slf4j @Service @Transactional public class DictDataServiceImpl implements DictDataService { @Autowired private DictDataDao dictDataDao; @Override public DictDataDao getRepository() { return dictDataDao; } @Override public Page findByCondition(DictData dictData, Pageable pageable) { return dictDataDao.findAll(new Specification() { @Nullable @Override public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { Path titleField = root.get("title"); Path statusField = root.get("status"); Path dictIdField = root.get("dictId"); List list = new ArrayList(); //模糊搜素 if(StrUtil.isNotBlank(dictData.getTitle())){ list.add(cb.like(titleField,'%'+dictData.getTitle()+'%')); } //状态 if(dictData.getStatus()!=null){ list.add(cb.equal(statusField, dictData.getStatus())); } //所属字典 if(StrUtil.isNotBlank(dictData.getDictId())){ list.add(cb.equal(dictIdField, dictData.getDictId())); } Predicate[] arr = new Predicate[list.size()]; cq.where(list.toArray(arr)); return null; } }, pageable); } @Override public List findByDictId(String dictId) { return dictDataDao.findByDictIdAndStatusOrderBySortOrder(dictId, CommonConstant.STATUS_NORMAL); } @Override public void deleteByDictId(String dictId) { dictDataDao.deleteByDictId(dictId); } }