public interface DevHREmpConstrastDao
        extends JpaRepository<DevHREmpConstrast, Long>,JpaSpecificationExecutor<DevHREmpConstrast>

 

 

/**
 * 条件查询时动态组装条件
 */
private Specification<DevHREmpConstrast> where(
        final String corg,final String name,final String type,final String date,final String checker){
    return new Specification<DevHREmpConstrast>() {
        @Override
        public Predicate toPredicate(Root<DevHREmpConstrast> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
            List<Predicate> predicates = new ArrayList<Predicate>();
            //机构
            if(corg!=null&&!corg.equals("")){
                List<String> orgIds = organizationDao.findByName("%"+corg+"%");
                if(orgIds.size()>0&&orgIds.size()<1000)
                    predicates.add(root.<String>get("confirmOrgNo").in(orgIds));//confirmOrgNo
            }
            //名字
            if(name!=null&&!name.equals("")){
                List<String> userIds = userDao.findByName(name);
                if(userIds.size()>0&&userIds.size()<1000)//如果太多就不管了这个条件了
                    predicates.add(root.<String>get("hrUserName").in(userIds));
            }
            //类型
            if(type!=null&&!type.equals(""))
                predicates.add(cb.equal(root.<String>get("hrUpdateType"),type));
            //日期
            if(date!=null&&!date.equals("")){
                //处理时间
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                Date startDate;
                Date endDate;
                try {
                    startDate = format.parse(date);
                } catch (ParseException e) {
                    startDate = new Date(946656000000L);//2000 01 01
                }
                endDate = startDate;
                Calendar calendar = Calendar.getInstance() ;
                calendar.setTime(endDate);
                calendar.add(Calendar.DATE, 1);
                endDate = calendar.getTime();
                calendar = null;
                predicates.add(cb.between(root.<Date>get("insDate"),startDate,endDate));
            }
            //审核人
            if(checker!=null&&!checker.equals("")){
                List<String> userIds = userDao.findByName(checker);
                if(userIds.size()>0&&userIds.size()<1000)//如果太多就不管了这个条件了
                    predicates.add(root.<String>get("confirmUserId").in(userIds));
            }
            return query.where(predicates.toArray(new Predicate[predicates.size()])).getRestriction();
        }
    };
}

 

    /**
     * 条件查询时动态组装条件
     */
    private Specification<DevHREmpConstrast> where(
            final String corg,final String name,final String type,final String date,final String checker){
        return new Specification<DevHREmpConstrast>() {
            @Override
            public Predicate toPredicate(Root<DevHREmpConstrast> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                List<Predicate> predicates = new ArrayList<Predicate>();
                //机构
                if(corg!=null&&!corg.equals("")){
                    List<String> orgIds = organizationDao.findByName("%"+corg+"%");
                    if(orgIds.size()>0&&orgIds.size()<1000)
                        predicates.add(root.<String>get("confirmOrgNo").in(orgIds));//confirmOrgNo
                }
                //名字
                if(name!=null&&!name.equals("")){
                    List<String> userIds = userDao.findByName(name);
                    if(userIds.size()>0&&userIds.size()<1000)//如果太多就不管了这个条件了
                        predicates.add(root.<String>get("hrUserName").in(userIds));
                }
                //类型
                if(type!=null&&!type.equals(""))
                    predicates.add(cb.equal(root.<String>get("hrUpdateType"),type));
                //日期
                if(date!=null&&!date.equals("")){
                    //处理时间
                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                    Date startDate;
                    Date endDate;
                    try {
                        startDate = format.parse(date);
                    } catch (ParseException e) {
                        startDate = new Date(946656000000L);//2000 01 01
                    }
                    endDate = startDate;
                    Calendar calendar = Calendar.getInstance() ;
                    calendar.setTime(endDate);
                    calendar.add(Calendar.DATE, 1);
                    endDate = calendar.getTime();
                    calendar = null;
                    predicates.add(cb.between(root.<Date>get("insDate"),startDate,endDate));
                }
                //审核人
                if(checker!=null&&!checker.equals("")){
                    List<String> userIds = userDao.findByName(checker);
                    if(userIds.size()>0&&userIds.size()<1000)//如果太多就不管了这个条件了
                        predicates.add(root.<String>get("confirmUserId").in(userIds));
                }
                return query.where(predicates.toArray(new Predicate[predicates.size()])).getRestriction();
            }
        };
    }