在日常开发中,通常需要对数据按月搜索,这里介绍下如何使用。
列表模板增加时间范围搜索组件
留意,这里选择时间精确到月。
<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()"/>
-
<#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;
}相关链接: