CRM客户关系管理系统开发第十九讲——实现客户拜访记录管理模块中条件查询客户拜访记录列表的功能

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/yerenyuan_pku/article/details/102764029

在客户拜访记录列表页面上准备一些筛选条件

首先,咱得在客户拜访记录列表页面上准备一些筛选条件,不妨我们按照拜访时间来进行筛选。之前咱在实现联系人管理模块中条件查询联系人列表的功能时,文本输入框使用的是Struts2框架里面的标签,这是因为如果我们是要带条件查询联系人列表的话,那么一定得在文本输入框中回显条件。所以,这里不妨我们一开始将筛选条件写成下面这样。
在这里插入图片描述
当然了,我们同样需要在客户拜访记录列表页面上添加一个日期插件,这是因为在拜访时间对应的文本框中输入时间进行筛选时,不能让我们自己手动瞎输入,应该弹出一个日历小窗口,让我们选择对应的时间。关于如何在页面中添加一个这样的日期插件,我就勿须多言了,上一讲中就已经讲过了。

改写SaleVisitAction中的findAll方法

首先,咱要在SaleVisitAction中接收从客户拜访记录列表页面中传递过来的参数,查询的开始日期倒是好接收,直接使用模型驱动这种方式处理请求参数即可,查询的结束日期就不能这样想当然地进行处理了,必须得采用属性驱动的第一种方式(即提供属性的set方法的方式)。

//接收数据(查询的结束日期)
private Date visit_end_time;

public void setVisit_end_time(Date visit_end_time) {
    this.visit_end_time = visit_end_time;
}

这样是不是就万事大吉了呢?你还是想多了,试想我们要在客户拜访记录列表页面上回显拜访时间输入框中的条件,查询的开始日期倒是好回显,因为它是封装到模型驱动使用的对象中了,但是查询的结束日期该怎样回显呢?我们只须对visit_end_time该属性提供一个get方法即可,这是因为在默认的情况下,会将Action实例压入到值栈的栈顶位置,那么Action实例中的属性也会在值栈中。

/*
 * visit_end_time它不也是SaleVisitAction中的一个属性吗?SaleVisitAction在栈里面,
 * SaleVisitAction中的属性不也在栈里面吗?但在在栈里面,它想被访问的话,就必须得有get方法。
 */
public Date getVisit_end_time() {
    return visit_end_time;
}

然后,修改SaleVisitAction中的findAll方法。

/*
 * 查询拜访记录列表的方法
 */
public String findAll() {
    //创建离线条件查询对象
    DetachedCriteria detachedCriteria = DetachedCriteria.forClass(SaleVisit.class);
    //如果有条件,那么就设置条件
    if (saleVisit.getVisit_time() != null) {//开始时间不为null
        detachedCriteria.add(Restrictions.ge("visit_time", saleVisit.getVisit_time()));//ge:>=(大于等于)
    }
    if (visit_end_time != null) {
        detachedCriteria.add(Restrictions.le("visit_time", visit_end_time));//le:<=(小于等于)
    }
    //调用业务层
    PageBean<SaleVisit> pageBean = saleVisitService.findByPage(detachedCriteria, currentPage, pageSize);
    //把pageBean存入值栈
    ActionContext.getContext().getValueStack().push(pageBean);
    return "findAll";
}

改完后,发布我们的项目到Tomcat服务器并启动,然后访问该项目的首页,点击客户拜访列表超链接之后,我们可以看到展示的客户拜访记录列表。此时,如果我们输入一些条件进行筛选,例如查询某段时间的客户拜访记录,那么就会出现一个小的bug,那就是当我们点击筛选按钮进行筛选时,条件是正常带过来了,但是日期格式变成了19-10-1这种,并不是我们原先输入的2019-10-01这种比较全的格式。
在这里插入图片描述
如何解决这个小bug呢?我们得在客户拜访记录列表页面上回显条件时使用<s:date>标签对日期格式化,这时会出现Struts2标签嵌套Struts2标签的情况,这是不允许出现的,因为Struts2标签是不能再去嵌套Struts2标签的,所以,我们最终要将筛选条件写成下面这样。
在这里插入图片描述
至此,客户拜访记录管理模块中条件查询客户拜访记录列表的功能,我们就算是实现了!至于修改和删除客户拜访记录这两个功能,我就不打算做了,就和之前一模一样嘛!客户拜访记录管理模块就做到这里为止。

猜你喜欢

转载自blog.csdn.net/yerenyuan_pku/article/details/102764029