功能需求
①用户在市场活动主页面,选择要导出的市场活动,点击"选择导出"按钮,把所有选择的数据生成一个excel文件,弹出文件下载的对话框;
②用户选择要保存的目录,完成选择导出市场活动的功能.
③*每次至少选择导出一条记录
④*导出成功之后,页面不刷新
流程图
代码实现
一、ActivityMapper
/**
* 选择导出
*/
List<Activity> selectActivitiesByids(String[] id);
<select id="selectActivitiesByids" resultMap="BaseResultMap">
select a.id,
u1.name as owner,
a.name,
a.start_date,
a.end_date,
a.cost,
a.description,
a.create_time,
u2.name as create_by,
a.edit_time,
u3.name as edit_by
from tbl_activity a
join tbl_user u1 on a.owner = u1.id
join tbl_user u2 on a.create_by = u2.id
left join tbl_user u3 on a.edit_by = u3.id
where a.id in
<foreach collection="array" item="id" separator="," open="(" close=")">
#{id}
</foreach>
order by a.create_time desc
</select>
二、ActivityService
/**
* 选择导出
*/
List<Activity> queryActivitiesByids(String[] id);
@Override
public List<Activity> queryActivitiesByids(String[] id) {
return activityMapper.selectActivitiesByids(id);
}
三、ActivityController
在常量类里面 // 设置导出市场活动文件名(注意:只能为excel文件,加上拓展名:.xsl) public static final String FILE_NAME_ACTIVITY = "activity.xls";
/**
* 选择导出
*/
@RequestMapping("/workbench/activity/exportSelectActivities.do")
public void exportSelectActivities(String[] id,HttpServletResponse response) throws Exception {
// 1.调用service
List<Activity> activityList = activityService.queryActivitiesByids(id);
// 2.文件下载
HSSFUtils.createExcelByActivityList(activityList,Contants.FILE_NAME_ACTIVITY,response);
}
四、index.jsp
//下载:选中
$("#exportActivityXzBtn").click(function () {
var eventIds = $("#tBody input[type='checkbox']:checked");
var ids = "?";
$.each(eventIds, function () {
ids += "id=" + this.value + "&";
});
ids = ids.substr(0, ids.length - 1);
window.location.href="workbench/activity/exportSelectActivities.do"+ids;
});