Exemplo n.º 1
0
  /**
   * 项目管理
   *
   * @return
   */
  public Page<EfficiencyProjectBo> findAllPro(final ProjectQuery q) {
    List<EfficiencyProjectBo> list_eff_pro = new ArrayList<EfficiencyProjectBo>();

    Specification<Project> sp =
        new Specification<Project>() {
          @Override
          public Predicate toPredicate(
              Root<Project> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
            List<Predicate> list = new ArrayList<>();
            if (StringUtils.isNotEmpty(q.getName())) {
              list.add(cb.equal(root.get("name").as(String.class), q.getName()));
            }
            if (StringUtils.isNotEmpty(q.getPm())) {
              list.add(cb.equal(root.get("pm").as(String.class), q.getPm()));
            }

            if (q.getId() != null) {
              list.add(cb.equal(root.get("id").as(Integer.class), q.getId()));
            }
            if (q.getState() != null) {
              list.add(cb.equal(root.get("state").as(Integer.class), q.getState()));
            }
            if (q.getProjectPersonnel() != null) {
              list.add(
                  cb.like(
                      root.get("projectPersonnel").as(String.class),
                      "%" + q.getProjectPersonnel() + "%"));
            }

            Predicate[] ps = new Predicate[list.size()];
            query.where(cb.and(list.toArray(ps)));
            if (StringUtils.isNotEmpty(q.getSort())) {
              query.orderBy(cb.desc(root.get(q.getSort())));
            }
            return query.getGroupRestriction();
          }
        };
    PageRequest pageRequest = null;
    if (q.getPageIndex() != null && q.getPageSize() != null) {
      pageRequest = new PageRequest(q.getPageIndex(), q.getPageSize());
    }
    Page<Project> pageList = projectDao.findAll(sp, pageRequest);

    List<Project> pro_list = pageList.getContent();

    long tatol = pageList.getTotalElements();
    if (null != pro_list && pro_list.size() > 0) {
      for (Project t_pro : pro_list) {
        /** beging */
        if (null != t_pro && null != t_pro.getId()) {
          EfficiencyProjectBo bo = findEfficiencyProjectByProId(t_pro.getId());
          if (q.getPlanHoursSearch() != null && q.getPlanHoursSearch() != bo.getPlanHoursAll()) {
            continue;
          }
          if (q.getActualHoursSearch() != null
              && q.getActualHoursSearch() != bo.getActualHoursAll()) {
            continue;
          }
          if (q.getOutputHoursSearch() != null
              && q.getOutputHoursSearch() != bo.getOutputHoursAll()) {
            continue;
          }
          list_eff_pro.add(bo);
        }
      }
    }
    Page<EfficiencyProjectBo> page =
        new PageImpl<EfficiencyProjectBo>(list_eff_pro, pageRequest, tatol);
    return page;
  }