123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319 |
- package com.iamberry.rst.controllers.cm;
- 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.faces.order.EfastOrderService;
- import com.iamberry.rst.utils.StitchAttrUtil;
- import com.iamberry.wechat.tools.ResponseJson;
- import net.sf.json.JSONObject;
- 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.bind.annotation.ResponseBody;
- 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;
- @Autowired
- private EfastOrderService efastOrderService;
- private Object lock = new Object();
- /**
- * 分页查询订单列表信息
- * @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;
- }
- /**
- * 同步百胜订单
- *
- * @return
- * @throws Exception
- */
- @ResponseBody
- @RequiresPermissions("salesOrder:sync:order")
- @RequestMapping("/sync_efast_order")
- public ResponseJson syncEfastOrder(HttpServletRequest request) throws Exception {
- String salesDealCode = request.getParameter("salesDealCode");
- if (!StringUtils.isNotEmpty(salesDealCode)) {
- return new ResponseJson(500, "订单编号不能为空,请重新输入!", 500);
- }
- //根据时间排序查询订单信息
- SalesOrder salesOrder = new SalesOrder();
- salesOrder.setSalesOrderId(salesDealCode);
- int num = salesOrderService.getOrderInfoCount(salesOrder);
- if (num > 0) {
- return new ResponseJson(500, "该订单已存在,无需同步!", 500);
- }
- synchronized (lock) {
- //获取订单详情
- JSONObject orderInfo = efastOrderService.getOrderFormEfast(salesDealCode);
- //添加订单和订单项
- boolean flag = salesOrderService.syncEfastOrder(orderInfo);
- if (flag) {
- return new ResponseJson(200, "同步成功!", 200);
- } else {
- return new ResponseJson(500, "没有查到该订单信息!", 500);
- }
- }
- }
- }
|