|
@@ -0,0 +1,277 @@
|
|
|
+package com.iamberry.rst.controllers.cm;
|
|
|
+
|
|
|
+import com.iamberry.rst.core.cm.CustomerInfo;
|
|
|
+import com.iamberry.rst.core.cm.SalesOrder;
|
|
|
+import com.iamberry.rst.core.cm.SalesOrderItem;
|
|
|
+import com.iamberry.rst.core.page.PagedResult;
|
|
|
+import com.iamberry.rst.faces.cm.SalesOrderService;
|
|
|
+import com.iamberry.rst.utils.StitchAttrUtil;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.apache.poi.hssf.usermodel.*;
|
|
|
+import org.apache.shiro.authz.annotation.RequiresPermissions;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Controller;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestParam;
|
|
|
+import org.springframework.web.servlet.ModelAndView;
|
|
|
+
|
|
|
+import javax.servlet.ServletOutputStream;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.*;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 订单信息
|
|
|
+ * Created by liuzhiwei on 2017/12/4.
|
|
|
+ */
|
|
|
+@Controller
|
|
|
+@RequestMapping("admin/salesOrder")
|
|
|
+public class AdminSalesOrderController {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SalesOrderService salesOrderService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分页查询订单列表信息
|
|
|
+ * @param request
|
|
|
+ * @param salesOrder
|
|
|
+ * @param pageSize
|
|
|
+ * @param pageNO
|
|
|
+ * @param totalNum
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @RequestMapping("/list_order_page")
|
|
|
+ @RequiresPermissions("salesOrder:select:salesOrder")
|
|
|
+ public ModelAndView listOrderPage(HttpServletRequest request, SalesOrder salesOrder,
|
|
|
+ @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
|
|
|
+ @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
|
|
|
+ @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) throws Exception {
|
|
|
+ ModelAndView mv = new ModelAndView("cm/salesOrder/sales_order_list");
|
|
|
+ //分页获取订单信息
|
|
|
+ PagedResult<SalesOrder> pagedResult = salesOrderService.listSalesOrderPage(pageNO, pageSize, salesOrder, totalNum == 0);
|
|
|
+ if (totalNum != 0) {
|
|
|
+ pagedResult.setTotal(totalNum);
|
|
|
+ }
|
|
|
+ salesOrder.setSalesOrderItemList(null);
|
|
|
+ StitchAttrUtil.setModelAndView(salesOrder, mv, "/admin/salesOrder/list_order_page", pagedResult);
|
|
|
+ return mv;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询订单详情
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @RequestMapping("/select_sales_order")
|
|
|
+ @RequiresPermissions("salesOrder:select:salesOrder")
|
|
|
+ public ModelAndView selectSalesOrder(HttpServletRequest request) throws Exception {
|
|
|
+ ModelAndView mv = new ModelAndView("cm/salesOrder/sales_order_detail");
|
|
|
+ String salesId = request.getParameter("salesId");
|
|
|
+ if (!StringUtils.isNotEmpty(salesId)) {
|
|
|
+ return mv;
|
|
|
+ }
|
|
|
+ SalesOrder order = new SalesOrder();
|
|
|
+ order.setSalesId(Integer.parseInt(salesId));
|
|
|
+ //根据id查询订单数据
|
|
|
+ List<SalesOrder> orderList = salesOrderService.listSalesOrder(order);
|
|
|
+ if (orderList == null || orderList.size() == 0) {
|
|
|
+ return mv;
|
|
|
+ }
|
|
|
+ order = orderList.get(0);
|
|
|
+ SalesOrderItem item = new SalesOrderItem();
|
|
|
+ item.setItemOrderId(Integer.parseInt(salesId));
|
|
|
+ //批量获取订单项信息
|
|
|
+ List<SalesOrderItem> itemList = salesOrderService.listSalesOrderItem(item);
|
|
|
+ order.setSalesOrderItemList(itemList);
|
|
|
+ mv.addObject("order",order);
|
|
|
+ return mv;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出订单
|
|
|
+ * @param request
|
|
|
+ * @param res
|
|
|
+ * @param salesOrder
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @RequiresPermissions("salesOrder:excel:salesOrder")
|
|
|
+ @RequestMapping("/sales_order_excel")
|
|
|
+ public void salesOrderExcel(HttpServletRequest request,HttpServletResponse res,
|
|
|
+ SalesOrder salesOrder) throws Exception{
|
|
|
+ //根据id查询订单数据
|
|
|
+ List<SalesOrder> orderList = salesOrderService.listOrderExcel(salesOrder);
|
|
|
+ if (orderList == null || orderList.size() == 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String[] cells = {
|
|
|
+ "订单号","交易号","销售公司","店铺名称","产品名称",
|
|
|
+ "颜色名称","数量","产品69码","是否支付","是否发货",
|
|
|
+ "订单金额","支付金额","付款方式","邮费","支付时间",
|
|
|
+ "发货时间","收货人姓名","收货人电话","收货地址",
|
|
|
+ "物流公司","物流单号","用户备注"
|
|
|
+ };
|
|
|
+ //导出订单Excel并下载
|
|
|
+ exportExcel(request,res,cells,orderList);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出订单Excel并下载
|
|
|
+ * @param request
|
|
|
+ * @param res
|
|
|
+ * @param cells
|
|
|
+ * @param orderList
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public void exportExcel(HttpServletRequest request,HttpServletResponse res,
|
|
|
+ String[] cells,List<SalesOrder> orderList) throws Exception {
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ //创建一个workbook,对应一个Excel文件
|
|
|
+ HSSFWorkbook wb = new HSSFWorkbook();
|
|
|
+ //在workbook中添加一个sheet,对应Excel中的一个sheet
|
|
|
+ HSSFSheet sheet = wb.createSheet("导出订单");
|
|
|
+ //在sheet中添加表头第0行,老版本poi对excel行数列数有限制short
|
|
|
+ HSSFRow row = sheet.createRow((int) 0);
|
|
|
+ //创建单元格,设置值表头,设置表头居中
|
|
|
+ HSSFCellStyle style = wb.createCellStyle();
|
|
|
+ //居中格式
|
|
|
+ style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
|
|
|
+ //设置表头
|
|
|
+
|
|
|
+ if (cells == null || cells.length == 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //循环设置表头
|
|
|
+ HSSFCell cell = null;
|
|
|
+ for (int i = 0;i < cells.length;i++) {
|
|
|
+ String name = cells[i];
|
|
|
+ cell = row.createCell(i);
|
|
|
+ cell.setCellValue(name);
|
|
|
+ cell.setCellStyle(style);
|
|
|
+ }
|
|
|
+ for (int i = 0; i < orderList.size(); i++) {
|
|
|
+ row = sheet.createRow((int) i + 1);
|
|
|
+ SalesOrder order = orderList.get(i);
|
|
|
+ String payType = "";
|
|
|
+ switch (order.getSalesPayType()) {
|
|
|
+ case 1:payType = "微信支付";break;
|
|
|
+ case 2:payType = "现金支付";break;
|
|
|
+ case 3:payType = "已支付定金¥99";break;
|
|
|
+ case 4:payType = "刷卡支付";break;
|
|
|
+ case 5:payType = "支付宝支付";break;
|
|
|
+ }
|
|
|
+ String payStatus = "";
|
|
|
+ switch (order.getSalesPayStatus()) {
|
|
|
+ case 0:payStatus = "未支付";break;
|
|
|
+ case 2:payStatus = "已支付";break;
|
|
|
+ }
|
|
|
+ String shippingStatus = "";
|
|
|
+ switch (order.getSalesShippingStatus()) {
|
|
|
+ case 0:shippingStatus = "未发货";break;
|
|
|
+ case 1:shippingStatus = "已发货";break;
|
|
|
+ case 3:shippingStatus = "备货中";break;
|
|
|
+ }
|
|
|
+ //获取快递公司
|
|
|
+ String postFirm = getPostFirm(order.getSalesPostFirm());
|
|
|
+
|
|
|
+ // 创建单元格,设置值
|
|
|
+ row.createCell(0).setCellValue(order.getSalesOrderId());
|
|
|
+ row.createCell(1).setCellValue(order.getSalesDealCode());
|
|
|
+ row.createCell(2).setCellValue(order.getCompanyName());
|
|
|
+ row.createCell(3).setCellValue(order.getStoreName());
|
|
|
+ row.createCell(4).setCellValue(order.getItemProductName());
|
|
|
+ row.createCell(5).setCellValue(order.getItemProductColor());
|
|
|
+ row.createCell(6).setCellValue(order.getItemNum());
|
|
|
+ row.createCell(7).setCellValue(order.getItemColorBar());
|
|
|
+ row.createCell(8).setCellValue(payStatus);
|
|
|
+ row.createCell(9).setCellValue(shippingStatus);
|
|
|
+ row.createCell(10).setCellValue(order.getSalesAmount()/100);
|
|
|
+ row.createCell(11).setCellValue(order.getSalesPayMoney()/100);
|
|
|
+ row.createCell(12).setCellValue(payType);
|
|
|
+ row.createCell(13).setCellValue(order.getSalesShippingFee());
|
|
|
+ row.createCell(14).setCellValue(order.getSalesPayTime()==null?"":format.format(order.getSalesPayTime()));
|
|
|
+ row.createCell(15).setCellValue(order.getSalesSendTime()==null?"":format.format(order.getSalesSendTime()));
|
|
|
+ row.createCell(16).setCellValue(order.getSalesAddressName());
|
|
|
+ row.createCell(17).setCellValue(order.getSalesAddressTel());
|
|
|
+ row.createCell(18).setCellValue(order.getSalesAddressInfo());
|
|
|
+ row.createCell(19).setCellValue(postFirm);
|
|
|
+ row.createCell(20).setCellValue(order.getSalesPostNum());
|
|
|
+ row.createCell(21).setCellValue(order.getSalesUserRemark());
|
|
|
+ }
|
|
|
+ //下载导出订单Excel
|
|
|
+ downloadOrderExcel(res,wb);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 下载导出订单Excel
|
|
|
+ * @param res
|
|
|
+ * @param wb
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public void downloadOrderExcel(HttpServletResponse res, HSSFWorkbook wb) throws Exception{
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ String fileName = format.format(new Date()) + "订单报表";
|
|
|
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
|
|
|
+ wb.write(os);
|
|
|
+ byte[] content = os.toByteArray();
|
|
|
+ InputStream is = new ByteArrayInputStream(content);
|
|
|
+ // 设置response参数,可以打开下载页面
|
|
|
+ res.reset();
|
|
|
+ res.setContentType("application/vnd.ms-excel;charset=utf-8");
|
|
|
+ res.setHeader("Content-Disposition", "attachment;filename="
|
|
|
+ + new String((fileName + ".xls").getBytes(), "iso-8859-1"));
|
|
|
+ ServletOutputStream out = res.getOutputStream();
|
|
|
+ BufferedInputStream bis = null;
|
|
|
+ BufferedOutputStream bos = null;
|
|
|
+ try {
|
|
|
+ bis = new BufferedInputStream(is);
|
|
|
+ bos = new BufferedOutputStream(out);
|
|
|
+ byte[] buff = new byte[2048];
|
|
|
+ int bytesRead;
|
|
|
+ // Simple read/write loop.
|
|
|
+ while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
|
|
|
+ bos.write(buff, 0, bytesRead);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ // TODO: handle exception
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ if (bis != null)
|
|
|
+ bis.close();
|
|
|
+ if (bos != null)
|
|
|
+ bos.close();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取快递公司
|
|
|
+ * @param firm
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String getPostFirm(String firm) {
|
|
|
+ String postFirm = "";
|
|
|
+ switch (firm) {
|
|
|
+ case "sto":postFirm = "申通快递";break;
|
|
|
+ case "yto":postFirm = "圆通快递";break;
|
|
|
+ case "sf":postFirm = "顺丰快递";break;
|
|
|
+ case "ems":postFirm = "邮政EMS";break;
|
|
|
+ case "zto":postFirm = "中通快递";break;
|
|
|
+ case "zjs":postFirm = "宅急送";break;
|
|
|
+ case "yunda":postFirm = "韵达快递";break;
|
|
|
+ case "cces":postFirm = "cces快递";break;
|
|
|
+ case "pick":postFirm = "上门提货";break;
|
|
|
+ case "htky":postFirm = "汇通快递";break;
|
|
|
+ case "ttkdex":postFirm = "天天快递";break;
|
|
|
+ case "stars":postFirm = "星晨急便";break;
|
|
|
+ case "jd":postFirm = "京东快递";break;
|
|
|
+ case "01":postFirm = "其他";break;
|
|
|
+ case "02":postFirm = "上门送货";break;
|
|
|
+ default:postFirm = "申通快递";break;
|
|
|
+ }
|
|
|
+ return postFirm;
|
|
|
+ }
|
|
|
+}
|