/* * * OrderController * */ package com.hboxs.control.admin; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import com.hboxs.common.Filter; import com.hboxs.common.JsonMessage; import com.hboxs.common.Message; import com.hboxs.common.Pageable; import com.hboxs.entity.Admin; import com.hboxs.entity.Order; import com.hboxs.excel.OrderTarget; import com.hboxs.service.AdminService; import com.hboxs.service.OrderService; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.time.DateUtils; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.io.OutputStream; import java.net.URLEncoder; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * Controller - 订单 */ @Controller("adminOrderController") @RequestMapping("/asl-admin/order") public class OrderController extends BaseController { @Resource(name = "adminServiceImpl") private AdminService adminService; @Resource(name = "orderServiceImpl") private OrderService orderService; /** * 添加 */ @RequestMapping(value = "/add", method = RequestMethod.GET) public String add(ModelMap model, HttpSession session) { return "/admin/order/add"; } /** * 保存 */ @RequestMapping(value = "/save", method = RequestMethod.POST) public String save(Order order, RedirectAttributes redirectAttributes) { orderService.save(order); addFlashMessage(redirectAttributes, SUCCESS_MESSAGE); return "redirect:list.htm"; } /** * 编辑 */ @RequestMapping(value = "/edit", method = RequestMethod.GET) public String edit(Long id, ModelMap model, HttpSession session) { model.addAttribute("order", orderService.find(id)); Admin admin = adminService.getCurrent(); model.addAttribute("admin", admin); return "/admin/order/edit"; } /** * 更新 */ @RequestMapping(value = "/update", method = RequestMethod.POST) public String update(Order order, RedirectAttributes redirectAttributes) { orderService.update(order, ""); addFlashMessage(redirectAttributes, SUCCESS_MESSAGE); return "redirect:list.htm"; } /** * 列表 */ @RequestMapping(value = "/list", method = RequestMethod.GET) public String list(String sn, String clientId, String productName, Order.Status status, Order.Type type, String beginEndDate, Pageable pageable, ModelMap model) { Admin admin = adminService.getCurrent(); model.addAttribute("admin", admin); List admins = adminService.findAllLowerAdmin(admin.getId()); Long[] lowerIds = null; if (admins == null) { lowerIds = new Long[]{}; } else { lowerIds = new Long[admins.size()]; for (int i = 0; i < admins.size(); i++) { lowerIds[i] = admins.get(i).getId(); } } switch (admin.getType()) { case admin: break; case agency: pageable.getFilters().add(Filter.in("adminId", lowerIds)); break; case merchant: pageable.getFilters().add(Filter.in("adminId", lowerIds)); break; case personage: pageable.getFilters().add(Filter.in("adminId", lowerIds)); break; } if (!StringUtils.isEmpty(beginEndDate)) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date begin = null; Date end = null; try { begin = simpleDateFormat.parse(beginEndDate.split(" - ")[0].trim()); end = simpleDateFormat.parse(beginEndDate.split(" - ")[1].trim()); } catch (ParseException e) { e.printStackTrace(); } pageable.getFilters().add(Filter.geDate("createDate" , begin)); pageable.getFilters().add(Filter.leDate("createDate" , end)); } if (!StringUtils.isEmpty(sn)) { pageable.getFilters().add(Filter.like("sn", "%" + sn + "%")); } if (!StringUtils.isEmpty(productName)) { pageable.getFilters().add(Filter.like("productName", "%" + productName + "%")); } if (status != null) { pageable.getFilters().add(Filter.eq("status", status)); } if (type != null) { pageable.getFilters().add(Filter.eq("type", type)); } if (!StringUtils.isEmpty(clientId)) { pageable.getFilters().add(Filter.like("clientId", "%" + clientId + "%")); } model.addAttribute("page", orderService.findPage(pageable)); model.addAttribute("beginEndDate" , beginEndDate); model.addAttribute("sn", sn); model.addAttribute("productName", productName); model.addAttribute("status", status); model.addAttribute("type", type); model.addAttribute("clientId", clientId); return "/admin/order/list"; } /** * 删除 */ @RequestMapping(value = "/delete", method = RequestMethod.POST) @ResponseBody public Message delete(Long[] ids) { orderService.delete(ids); return SUCCESS_MESSAGE; } @RequestMapping(value = "/export") public Object export(HttpServletResponse response, Long[] ids, String date) { Admin admin = adminService.getCurrent(); List admins = adminService.findAllLowerAdmin(admin.getId()); Long[] lowerIds = null; if (admins == null) { lowerIds = new Long[]{}; } else { lowerIds = new Long[admins.size()]; for (int i = 0; i < admins.size(); i++) { lowerIds[i] = admins.get(i).getId(); } } List filters = new ArrayList<>(); switch (admin.getType()) { case admin: break; case agency: filters.add(Filter.in("adminId", lowerIds)); break; case merchant: filters.add(Filter.in("adminId", lowerIds)); break; case personage: filters.add(Filter.in("adminId", lowerIds)); break; } try { if (StringUtils.isNotBlank(date)) { String[] datestring = date.split(" - "); Date startDate = new SimpleDateFormat("yyyy-MM-dd").parse(datestring[0]); Date endDate = new SimpleDateFormat("yyyy-MM-dd").parse(datestring[1]); filters.add(Filter.geDate("createDate", startDate)); filters.add(Filter.leDate("createDate", DateUtils.addDays(endDate, 1))); } } catch (ParseException e) { e.printStackTrace(); return JsonMessage.success("导出错误"); } //List list = orderService.findList(ids); List list = orderService.findList(null, filters, null); List orderTargetList = orderService.findById(admin, list); ExportParams exportParams = new ExportParams("订单记录", "sheet1"); Workbook workbook = ExcelExportUtil.exportExcel(exportParams, OrderTarget.class, orderTargetList); if (workbook != null) { OutputStream os = null; try { os = response.getOutputStream(); SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); response.setContentType("application/vnd.ms-excel;charset=utf-8"); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("订单记录数据导出" + format.format(new Date()) + ".xls", "UTF-8")); workbook.write(os); return JsonMessage.success("导出成功"); } catch (Exception e) { e.printStackTrace(); return JsonMessage.success("导出错误"); } finally { try { os.close(); workbook.close(); } catch (IOException e) { e.printStackTrace(); } } } return JsonMessage.success("导出错误"); } }