Skip to content
网游世界
网游世界

吾生有涯,而知无涯。

  • 首页
  • PHP
    • ThinkPHP
    • FastAdmin
    • webman
  • JavaScript
    • jQuery
    • AdminLTE
  • Free Pascal
  • Java
    • JeeSite
    • 若依
    • ruoyi-vue-pro
  • 其它
    • 操作系统
    • 树莓派
    • 前端
    • Null
  • 关于
网游世界

吾生有涯,而知无涯。

JeeSite 按月搜索

3Vshej, 2023年12月22日 周五2023年12月22日 周五

在日常开发中,通常需要对数据按月搜索,这里介绍下如何使用。

列表模板增加时间范围搜索组件

留意,这里选择时间精确到月。

<div class="form-group">
    <label class="control-label">${text('发货时间')}:</label>
    <div class="control-inline">
        <#form:input path="shippingDate_gte" readonly="true" maxlength="20" class="form-control laydate width-date"
        dataFormat="date" data-type="date" data-format="yyyy-MM" data-done="shippingDate_lte.click()"/>
        &nbsp;-&nbsp;
        <#form:input path="shippingDate_lte" readonly="true" maxlength="20" class="form-control laydate width-date"
        dataFormat="date" data-type="date" data-format="yyyy-MM"/>
    </div>
</div>

实体类中增加搜索设置

public Date getShippingDate_gte() {
    return sqlMap.getWhere().getValue("shipping_date", QueryType.GTE);
}
public void setShippingDate_gte(Date shippingDate) {
    sqlMap.getWhere().and("shipping_date", QueryType.GTE, shippingDate);
}

public Date getShippingDate_lte() {
    return sqlMap.getWhere().getValue("shipping_date", QueryType.LTE);
}
public void setShippingDate_lte(Date shippingDate) {
    sqlMap.getWhere().and("shipping_date", QueryType.LTE, shippingDate);
}

控制器中增加时间处理

如果查询时间为空,时间默认为近3个月。否则,开始时间为指定时间的 00:00:00,结束时间为 23:59:59 。

/**
 * 查询列表数据
 */
@RequiresPermissions("product:flowPaymentFreight:view")
@RequestMapping(value = "paymentTotalListData")
@ResponseBody
public List<PaymentTotalList> paymentTotalListData(PaymentTotalList paymentTotalList, HttpServletRequest request, HttpServletResponse response) {

    // 日历初始化
    Calendar calendar = Calendar.getInstance();

    // 获取传递的时间参数
    Date startDate = paymentTotalList.getShippingDate_gte();
    Date endDate = paymentTotalList.getShippingDate_lte();

    // 时间为空,取近 3个月
    if (startDate == null || endDate == null) {
        endDate = new Date();
        calendar.setTime(endDate);
        calendar.add(Calendar.MONTH, -3);
        startDate = calendar.getTime();
    }

    // 计算开始时间
    calendar.setTime(startDate);
    // 设置本月第一天
    // calendar.set(Calendar.DAY_OF_MONTH, 1);
    // 这里是 24 小时制
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);

    // 重新设置查询条件
    startDate = calendar.getTime();
    paymentTotalList.setShippingDate_gte(startDate);

    // 计算结束时间
    calendar.setTime(endDate);
    // 这里是 24 小时制
    calendar.set(Calendar.HOUR_OF_DAY, 23);
    calendar.set(Calendar.MINUTE, 59);
    calendar.set(Calendar.SECOND, 59);

    // 取本月最后一天
    // int lastDayOfMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    // 设置本月最后一天
    // calendar.set(Calendar.DAY_OF_MONTH, lastDayOfMonth);

    // 重新设置查询条件
    endDate = calendar.getTime();
    paymentTotalList.setShippingDate_lte(endDate);

    List<PaymentTotalList> page = flowPaymentFreightService.findList(paymentTotalList);
    return page;
}

相关链接:

  • mybatisplus时间范围查询
  • java 获取当月第一天和最后一天 获取前一个月第一天和最后一天

相关文章:

  1. JeeSite 列表中增加日期范围筛选 在开发中,需要进行日期范围筛选,那么可以按以下方法来进行。...
  2. JeeSite 列表中添加子列表 在 JeeSite 列表中,在业务中有需要查看子表数据。具体方法为:...
  3. JeeSite 公共样式、JS 文件 公共 CSS 文件(编写样式以应用到全局): web/src/main/resources/stat......
  4. JeeSite 验证数据唯一 在日常开发中,最常用的是数据唯一验证;如客户名称不能重复。因为,自己水平有限,在 JeeSite 中......
Java JeeSite JeeSite 框架日期时间

文章导航

Previous post
Next post

近期文章

  • Android Studio Gradle 配置国内镜像
  • 为什么重新发明轮子
  • ruoyi-vue-pro 匿名访问
  • VUE 中接收 code 异常
  • 关于 AI

归档

  • 2025 年 4 月
  • 2025 年 3 月
  • 2025 年 2 月
  • 2025 年 1 月
  • 2024 年 12 月
  • 2024 年 11 月
  • 2024 年 10 月
  • 2024 年 9 月
  • 2024 年 8 月
  • 2024 年 7 月
  • 2024 年 6 月
  • 2024 年 5 月
  • 2024 年 4 月
  • 2024 年 3 月
  • 2024 年 2 月
  • 2024 年 1 月
  • 2023 年 12 月
除非特殊说明,本站作品采用知识共享署名 4.0 国际许可协议进行许可。
豫公网安备 41010402002622号 豫ICP备2020029609号-3
©2025 3Vshej