zoukankan      html  css  js  c++  java
  • CriteriaBuilder jpa 日期date查询

    概要:前端日期选择器选择完之后传一个String到后台,后台的字段的数据类型是date

    前端:

                    <label class="layui-form-label" >单据日期</label>
                    <div class="layui-input-inline">
                        <input type="text" id="taxDate" placeholder="单据日期"
                               autocomplete="off" class="layui-input">
                    </div>
        //单据日期
        laydate.render({
            elem: '#taxDate'
            ,type: 'date' //默认,可不填
        });

    后端:

        @Override
        public Page<SalesOrder> findPage(SalesOrderModel salesOrderModel, int currentPage, int pageSize) {
    
            Specification<SalesOrder> specification = new Specification<SalesOrder>() {
    
                @Override
                public Predicate toPredicate(Root<SalesOrder> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                    List<Predicate> list = new ArrayList<>();
                    Predicate deleteMark = cb.equal(root.get("deleteMark").as(Boolean.class), false);
                    list.add(deleteMark);
                    // 单据编号
                    if (!CommonUtil.isEmpty(salesOrderModel.getOrderId())) {
                        Predicate orderId = cb.like(root.get("orderId"), "%" + salesOrderModel.getOrderId().trim() + "%");
                        list.add(orderId);
                    }
    
                    // 内部编号
                    if (!CommonUtil.isEmpty(salesOrderModel.getEntryId())) {
                        Predicate entryId = cb.like(root.get("entryId"), "%" + salesOrderModel.getEntryId().trim() + "%");
                        list.add(entryId);
                    }
    
                    // 单据日期
                    if (!CommonUtil.isEmpty(salesOrderModel.getTaxDate())) {
                        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                        Date startDate = null;
                        Date endDate = null;
                        try {
                            startDate = format.parse(salesOrderModel.getTaxDate());
                            endDate = format.parse(salesOrderModel.getTaxDate());
                        } catch (ParseException e) {
                  startDate = new Date();
                  endDate = new Date();
                }
                Predicate taxDate
    = cb.between(root.<Date>get("taxDate"),startDate, endDate);//开始日期和结束日期是同一个 list.add(taxDate);
          }
            
                
          if(!CommonUtil.isEmpty(sapOrderModel.getStartTime()) && !CommonUtil.isEmpty(sapOrderModel.getEndTime())){
          //起始日期
          Predicate startTime = cb.greaterThanOrEqualTo(root.get("docDate").as(String.class), sapOrderModel.getStartTime());
          list.add(startTime);
          //结束日期
           Predicate endTime = cb.lessThanOrEqualTo(root.get("docDate").as(String.class), sapOrderModel.getEndTime());
        list.add(endTime);

          }


            Predicate[] predicates
    = new Predicate[list.size()]; return cb.and(list.toArray(predicates));
    } };
            List
    <Order> orders = new ArrayList<>(); orders.add(new Order(Direction.DESC, "createDate"));
          Sort sort
    = Sort.by(orders); Pageable pageable = PageRequest.of(currentPage - 1, pageSize, sort);

          return salesOrderRepository.findAll(specification, pageable);
    }
  • 相关阅读:
    MySQL-EXPLAIN执行计划字段解释
    MySQL-EXPLAIN执行计划Extra解释
    HTTP与HTTPS的区别
    【面试】Java中sleep和wait的区别
    Nginx之前后端分离(入门)
    玩程序 之 一 . 字符串处理工具(可通过C#脚本扩展)
    C#实现下载功能,可用于软件自动更新
    对c#剪切板Clipboard占用的问题一点解决方法
    C# 制作 仪表
    C#使用自定义字体(从文件获取)
  • 原文地址:https://www.cnblogs.com/bbllw/p/11398968.html
Copyright © 2011-2022 走看看