AdminSalesOrderController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. package com.iamberry.rst.controllers.cm;
  2. import com.iamberry.rst.core.cm.CustomerInfo;
  3. import com.iamberry.rst.core.cm.SalesOrder;
  4. import com.iamberry.rst.core.cm.SalesOrderItem;
  5. import com.iamberry.rst.core.page.PagedResult;
  6. import com.iamberry.rst.faces.cm.SalesOrderService;
  7. import com.iamberry.rst.utils.StitchAttrUtil;
  8. import org.apache.commons.lang.StringUtils;
  9. import org.apache.poi.hssf.usermodel.*;
  10. import org.apache.shiro.authz.annotation.RequiresPermissions;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Controller;
  13. import org.springframework.web.bind.annotation.RequestMapping;
  14. import org.springframework.web.bind.annotation.RequestParam;
  15. import org.springframework.web.servlet.ModelAndView;
  16. import javax.servlet.ServletOutputStream;
  17. import javax.servlet.http.HttpServletRequest;
  18. import javax.servlet.http.HttpServletResponse;
  19. import java.io.*;
  20. import java.text.SimpleDateFormat;
  21. import java.util.Date;
  22. import java.util.List;
  23. /**
  24. * 订单信息
  25. * Created by liuzhiwei on 2017/12/4.
  26. */
  27. @Controller
  28. @RequestMapping("admin/salesOrder")
  29. public class AdminSalesOrderController {
  30. @Autowired
  31. private SalesOrderService salesOrderService;
  32. /**
  33. * 分页查询订单列表信息
  34. * @param request
  35. * @param salesOrder
  36. * @param pageSize
  37. * @param pageNO
  38. * @param totalNum
  39. * @return
  40. * @throws Exception
  41. */
  42. @RequestMapping("/list_order_page")
  43. @RequiresPermissions("salesOrder:select:salesOrder")
  44. public ModelAndView listOrderPage(HttpServletRequest request, SalesOrder salesOrder,
  45. @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
  46. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  47. @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) throws Exception {
  48. ModelAndView mv = new ModelAndView("cm/salesOrder/sales_order_list");
  49. //分页获取订单信息
  50. PagedResult<SalesOrder> pagedResult = salesOrderService.listSalesOrderPage(pageNO, pageSize, salesOrder, totalNum == 0);
  51. if (totalNum != 0) {
  52. pagedResult.setTotal(totalNum);
  53. }
  54. salesOrder.setSalesOrderItemList(null);
  55. StitchAttrUtil.setModelAndView(salesOrder, mv, "/admin/salesOrder/list_order_page", pagedResult);
  56. return mv;
  57. }
  58. /**
  59. * 查询订单详情
  60. * @param request
  61. * @return
  62. * @throws Exception
  63. */
  64. @RequestMapping("/select_sales_order")
  65. @RequiresPermissions("salesOrder:select:salesOrder")
  66. public ModelAndView selectSalesOrder(HttpServletRequest request) throws Exception {
  67. ModelAndView mv = new ModelAndView("cm/salesOrder/sales_order_detail");
  68. String salesId = request.getParameter("salesId");
  69. if (!StringUtils.isNotEmpty(salesId)) {
  70. return mv;
  71. }
  72. SalesOrder order = new SalesOrder();
  73. order.setSalesId(Integer.parseInt(salesId));
  74. //根据id查询订单数据
  75. List<SalesOrder> orderList = salesOrderService.listSalesOrder(order);
  76. if (orderList == null || orderList.size() == 0) {
  77. return mv;
  78. }
  79. order = orderList.get(0);
  80. SalesOrderItem item = new SalesOrderItem();
  81. item.setItemOrderId(Integer.parseInt(salesId));
  82. //批量获取订单项信息
  83. List<SalesOrderItem> itemList = salesOrderService.listSalesOrderItem(item);
  84. order.setSalesOrderItemList(itemList);
  85. mv.addObject("order",order);
  86. return mv;
  87. }
  88. /**
  89. * 导出订单
  90. * @param request
  91. * @param res
  92. * @param salesOrder
  93. * @throws Exception
  94. */
  95. @RequiresPermissions("salesOrder:excel:salesOrder")
  96. @RequestMapping("/sales_order_excel")
  97. public void salesOrderExcel(HttpServletRequest request,HttpServletResponse res,
  98. SalesOrder salesOrder) throws Exception{
  99. //根据id查询订单数据
  100. List<SalesOrder> orderList = salesOrderService.listOrderExcel(salesOrder);
  101. if (orderList == null || orderList.size() == 0) {
  102. return;
  103. }
  104. String[] cells = {
  105. "订单号","交易号","销售公司","店铺名称","产品名称",
  106. "颜色名称","数量","产品69码","是否支付","是否发货",
  107. "订单金额","支付金额","付款方式","邮费","支付时间",
  108. "发货时间","收货人姓名","收货人电话","收货地址",
  109. "物流公司","物流单号","用户备注"
  110. };
  111. //导出订单Excel并下载
  112. exportExcel(request,res,cells,orderList);
  113. }
  114. /**
  115. * 导出订单Excel并下载
  116. * @param request
  117. * @param res
  118. * @param cells
  119. * @param orderList
  120. * @throws Exception
  121. */
  122. public void exportExcel(HttpServletRequest request,HttpServletResponse res,
  123. String[] cells,List<SalesOrder> orderList) throws Exception {
  124. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  125. //创建一个workbook,对应一个Excel文件
  126. HSSFWorkbook wb = new HSSFWorkbook();
  127. //在workbook中添加一个sheet,对应Excel中的一个sheet
  128. HSSFSheet sheet = wb.createSheet("导出订单");
  129. //在sheet中添加表头第0行,老版本poi对excel行数列数有限制short
  130. HSSFRow row = sheet.createRow((int) 0);
  131. //创建单元格,设置值表头,设置表头居中
  132. HSSFCellStyle style = wb.createCellStyle();
  133. //居中格式
  134. style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
  135. //设置表头
  136. if (cells == null || cells.length == 0) {
  137. return;
  138. }
  139. //循环设置表头
  140. HSSFCell cell = null;
  141. for (int i = 0;i < cells.length;i++) {
  142. String name = cells[i];
  143. cell = row.createCell(i);
  144. cell.setCellValue(name);
  145. cell.setCellStyle(style);
  146. }
  147. for (int i = 0; i < orderList.size(); i++) {
  148. row = sheet.createRow((int) i + 1);
  149. SalesOrder order = orderList.get(i);
  150. String payType = "";
  151. switch (order.getSalesPayType()) {
  152. case 1:payType = "微信支付";break;
  153. case 2:payType = "现金支付";break;
  154. case 3:payType = "已支付定金¥99";break;
  155. case 4:payType = "刷卡支付";break;
  156. case 5:payType = "支付宝支付";break;
  157. }
  158. String payStatus = "";
  159. switch (order.getSalesPayStatus()) {
  160. case 0:payStatus = "未支付";break;
  161. case 2:payStatus = "已支付";break;
  162. }
  163. String shippingStatus = "";
  164. switch (order.getSalesShippingStatus()) {
  165. case 0:shippingStatus = "未发货";break;
  166. case 1:shippingStatus = "已发货";break;
  167. case 3:shippingStatus = "备货中";break;
  168. }
  169. //获取快递公司
  170. String postFirm = getPostFirm(order.getSalesPostFirm());
  171. // 创建单元格,设置值
  172. row.createCell(0).setCellValue(order.getSalesOrderId());
  173. row.createCell(1).setCellValue(order.getSalesDealCode());
  174. row.createCell(2).setCellValue(order.getCompanyName());
  175. row.createCell(3).setCellValue(order.getStoreName());
  176. row.createCell(4).setCellValue(order.getItemProductName());
  177. row.createCell(5).setCellValue(order.getItemProductColor());
  178. row.createCell(6).setCellValue(order.getItemNum());
  179. row.createCell(7).setCellValue(order.getItemColorBar());
  180. row.createCell(8).setCellValue(payStatus);
  181. row.createCell(9).setCellValue(shippingStatus);
  182. row.createCell(10).setCellValue(order.getSalesAmount()/100);
  183. row.createCell(11).setCellValue(order.getSalesPayMoney()/100);
  184. row.createCell(12).setCellValue(payType);
  185. row.createCell(13).setCellValue(order.getSalesShippingFee());
  186. row.createCell(14).setCellValue(order.getSalesPayTime()==null?"":format.format(order.getSalesPayTime()));
  187. row.createCell(15).setCellValue(order.getSalesSendTime()==null?"":format.format(order.getSalesSendTime()));
  188. row.createCell(16).setCellValue(order.getSalesAddressName());
  189. row.createCell(17).setCellValue(order.getSalesAddressTel());
  190. row.createCell(18).setCellValue(order.getSalesAddressInfo());
  191. row.createCell(19).setCellValue(postFirm);
  192. row.createCell(20).setCellValue(order.getSalesPostNum());
  193. row.createCell(21).setCellValue(order.getSalesUserRemark());
  194. }
  195. //下载导出订单Excel
  196. downloadOrderExcel(res,wb);
  197. }
  198. /**
  199. * 下载导出订单Excel
  200. * @param res
  201. * @param wb
  202. * @throws Exception
  203. */
  204. public void downloadOrderExcel(HttpServletResponse res, HSSFWorkbook wb) throws Exception{
  205. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  206. String fileName = format.format(new Date()) + "订单报表";
  207. ByteArrayOutputStream os = new ByteArrayOutputStream();
  208. wb.write(os);
  209. byte[] content = os.toByteArray();
  210. InputStream is = new ByteArrayInputStream(content);
  211. // 设置response参数,可以打开下载页面
  212. res.reset();
  213. res.setContentType("application/vnd.ms-excel;charset=utf-8");
  214. res.setHeader("Content-Disposition", "attachment;filename="
  215. + new String((fileName + ".xls").getBytes(), "iso-8859-1"));
  216. ServletOutputStream out = res.getOutputStream();
  217. BufferedInputStream bis = null;
  218. BufferedOutputStream bos = null;
  219. try {
  220. bis = new BufferedInputStream(is);
  221. bos = new BufferedOutputStream(out);
  222. byte[] buff = new byte[2048];
  223. int bytesRead;
  224. // Simple read/write loop.
  225. while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
  226. bos.write(buff, 0, bytesRead);
  227. }
  228. } catch (Exception e) {
  229. // TODO: handle exception
  230. e.printStackTrace();
  231. } finally {
  232. if (bis != null)
  233. bis.close();
  234. if (bos != null)
  235. bos.close();
  236. }
  237. }
  238. /**
  239. * 获取快递公司
  240. * @param firm
  241. * @return
  242. */
  243. public String getPostFirm(String firm) {
  244. String postFirm = "";
  245. switch (firm) {
  246. case "sto":postFirm = "申通快递";break;
  247. case "yto":postFirm = "圆通快递";break;
  248. case "sf":postFirm = "顺丰快递";break;
  249. case "ems":postFirm = "邮政EMS";break;
  250. case "zto":postFirm = "中通快递";break;
  251. case "zjs":postFirm = "宅急送";break;
  252. case "yunda":postFirm = "韵达快递";break;
  253. case "cces":postFirm = "cces快递";break;
  254. case "pick":postFirm = "上门提货";break;
  255. case "htky":postFirm = "汇通快递";break;
  256. case "ttkdex":postFirm = "天天快递";break;
  257. case "stars":postFirm = "星晨急便";break;
  258. case "jd":postFirm = "京东快递";break;
  259. case "01":postFirm = "其他";break;
  260. case "02":postFirm = "上门送货";break;
  261. default:postFirm = "申通快递";break;
  262. }
  263. return postFirm;
  264. }
  265. }