任务导出

@GetMapping("/download")
@ApiOperation("任务导出")
public R download(@RequestParam(required = false)@ApiParam("搜索条件") String keywordName,
@RequestParam(required = false)@ApiParam("搜索关键字") String keyword,
@RequestParam(required = false)@ApiParam("起始时间") String startTime,
@RequestParam(required = false)@ApiParam("结束时间") String endTime,
@RequestParam(required = false)@ApiParam("业务类型") Integer businessType,
@RequestParam(required = false)@ApiParam("执行状态") Integer status,
@RequestParam(required = false)@ApiParam("客户来源(客户编码)") String customerCode,
@CurrentUser PaperUser sysUser,
HttpServletResponse response){
if (sysUser == null){
return R.error("请重新登录").setCode(401);
}
String roleType = RoleUtils.getRoleCustomerCode(sysUser);
if(!StringUtil.isEmpty(roleType)){
customerCode = roleType;
}
String column = null;
if(!StringUtil.isEmpty(keywordName) && !StringUtil.isEmpty(keyword)){
switch (keywordName){
case "任务编号":
column = "task_no";
break;
case "订单号":
column = "order_no";
break;
case "员工工号":
column = "job_number";
break;
case "员工姓名":
column = "emp_name";
break;
default:
break;
}
}
QueryWrapper<DistributionTask> queryWrapper = new QueryWrapper<>();
queryWrapper.like(!StringUtil.isEmpty(column),column,keyword).lambda()
.le(!StringUtil.isEmpty(endTime),DistributionTask::getExecuteTime,endTime)
.ge(!StringUtil.isEmpty(startTime),DistributionTask::getExecuteTime,startTime)
.eq(businessType != null,DistributionTask::getBusinessType,businessType)
.eq(status != null,DistributionTask::getStatus,status)
.eq(!StringUtil.isEmpty(customerCode),DistributionTask::getCustomerCode,customerCode).eq(DistributionTask::getDel,1);
ExcelWriter writer = ExcelUtil.getWriter(false);
List<String> head = Arrays.asList("序号", "任务编号", "订单编号","员工工号", "员工姓名", "备注", "来源客户", "客户位置编码", "任务时间", "商品名称", "商品规格", "商品数量", "业务类型", "任务状态", "揽件距离", "揽件时间"
,"揽件原因", "派件距离", "派件时间", "派件原因", "任务完成状态");
writer.writeHeadRow(head);
List<DistributionTask> taskList = distributionTaskService.list(queryWrapper);
int j = 0;
for(DistributionTask task:taskList){

List<TaskGoods> taskGoodsList = taskGoodsService.list(new QueryWrapper<TaskGoods>().lambda().eq(TaskGoods::getTaskId,task.getId()));
for (TaskGoods taskGoods : taskGoodsList){
writer.writeRow(Arrays.asList(++j,task.getTaskNo(),task.getOrderNo(),task.getJobNumber(),task.getEmpName(),task.getRemark(),task.getCustomerName(),task.getCusLocationCode(),task.getExecuteTime(),taskGoods.getGoodsName(),taskGoods.getGoodsSpell(),
taskGoods.getCount(),BusinessTypeEnum.getDesc(task.getBusinessType()),TaskStatusEnum.valueOf(task.getStatus()).getMsg(),task.getPackageDistance(),task.getPackageTime(),task.getPackageReason(),task.getDeliveryDistance(),task.getDeliveryTime(),task.getDeliveryReason(),TaskFinishStatusEnum.valueOf(task.getClassify()).getMsg()));
}
}

//设置宽度
for (int i = 0; i < head.size(); i++) {
writer.setColumnWidth(i, 30);
}
R r = null;
try {
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode("任务导出", "utf-8") + ".xlsx");
ServletOutputStream out = response.getOutputStream();
writer.flush(out);
r = R.ok();
} catch (Exception e) {
e.printStackTrace();
r = R.error("下载失败");
}finally {
writer.close();
}
return r;
}
原文地址:https://www.cnblogs.com/pxzbky/p/11911903.html