Parcourir la source

呵呵商城改版part7

Aslee il y a 3 ans
Parent
commit
f64f545d85

+ 164 - 0
src/main/java/com/caimei/modules/hehe/service/HeHeNewOrderService.java

@@ -18,11 +18,15 @@ import com.thinkgem.jeesite.common.persistence.Page;
 import com.thinkgem.jeesite.common.service.CrudService;
 import com.thinkgem.jeesite.common.utils.StringUtils;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -295,4 +299,164 @@ public class HeHeNewOrderService extends CrudService<HeHeNewOrderDao, NewOrder>
     public void cancelOrder(Integer orderID) {
         heHeNewOrderDao.cancleOrder(orderID);
     }
+
+    public String batchExportOrder(List<NewOrder> orderList, OutputStream outputStream) {
+        try {
+            HSSFWorkbook workbook = new HSSFWorkbook();
+            // 创建机构工作表
+            HSSFSheet productSheet = workbook.createSheet("订单列表");
+            // sheet样式定义
+            HSSFCellStyle topCellStyle = this.getTopCellStyle(workbook);
+            HSSFCellStyle customCellStyle = this.getCustomCellStyle(workbook);
+            // 创建列头行
+            HSSFRow productTopRow = productSheet.createRow(0);
+            // 添加列头单元格(5个固定列+参数列表)
+            String[] rowName = {"订单ID", "下单时间", "订单编号", "商品名称",
+                    "商品规格", "商品单价", "收货人", "数量", "订单金额"};
+            for (int i = 0; i < rowName.length; i++) {
+                HSSFCell productTopRowCell = productTopRow.createCell(i);
+                productTopRowCell.setCellType(CellType.valueOf("STRING"));
+                HSSFRichTextString columnText = new HSSFRichTextString(rowName[i]);
+                productTopRowCell.setCellValue(columnText);
+                productTopRowCell.setCellStyle(topCellStyle);
+            }
+            int productRowNum = 1;
+            for (NewOrder order : orderList) {
+                List<NewOrderProduct> orderProducts = order.getNewOrderProducts();
+                int startRowNum = productRowNum;
+                for (int i = 0; i < orderProducts.size(); i++) {
+                    // 订单下商品数量+1
+                    NewOrderProduct product = orderProducts.get(i);
+                    // 组装商品数据
+                    List<String> productData = new ArrayList<>();
+                    productData.add(order.getOrderID().toString());
+                    productData.add(order.getOrderTime());
+                    productData.add(product.getOrderNo());
+                    productData.add(product.getName());
+                    productData.add(product.getProductUnit());
+                    productData.add(product.getDiscountPrice().toString());
+                    productData.add(order.getReceiver());
+                    productData.add(product.getNum().toString());
+                    productData.add(product.getTotalAmount().toString());
+                    // 创建商品行
+                    HSSFRow productRow = productSheet.createRow(productRowNum);
+                    if (i == 0) {
+                        // 订单的第一个商品行存入公用单元格数据
+                        for (int j = 0; j < 3; j++) {
+                            HSSFCell productCell = productRow.createCell(j);
+                            productCell.setCellType(CellType.valueOf("STRING"));
+                            productCell.setCellValue(productData.get(j));
+                            productCell.setCellStyle(customCellStyle);
+                        }
+                    }
+                    for (int j = 3; j < 9; j++) {
+                        HSSFCell productCell = productRow.createCell(j);
+                        productCell.setCellType(CellType.valueOf("STRING"));
+                        productCell.setCellValue(productData.get(j));
+                        productCell.setCellStyle(customCellStyle);
+                    }
+                    productRowNum++;
+                }
+                if (startRowNum != productRowNum - 1) {
+                    // 当一个订单中有多个商品时,合并公用单元格
+                    for (int i = 0; i < 3; i++) {
+                        productSheet.addMergedRegion(new CellRangeAddress(startRowNum, productRowNum - 1, i, i));
+                    }
+                }
+
+            }
+            outputStream.flush();
+            workbook.write(outputStream);
+            outputStream.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+            return "导出失败";
+        }
+        return "导出成功";
+    }
+
+
+    /**
+     * 列头单元格样式
+     */
+    private HSSFCellStyle getTopCellStyle(HSSFWorkbook workbook) {
+
+        // 设置字体
+        HSSFFont font = workbook.createFont();
+        // 设置字体大小
+        font.setFontHeightInPoints((short) 11);
+        // 字体加粗
+        font.setBold(true);
+        // 设置字体名字
+        font.setFontName("Courier New");
+        // 设置样式;
+        HSSFCellStyle style = workbook.createCellStyle();
+        // 设置底边框;
+        style.setBorderBottom(BorderStyle.THIN);
+        // 设置底边框颜色;
+        style.setBottomBorderColor(IndexedColors.BLACK.index);
+        // 设置左边框;
+        style.setBorderLeft(BorderStyle.THIN);
+        // 设置左边框颜色;
+        style.setLeftBorderColor(IndexedColors.BLACK.index);
+        // 设置右边框;
+        style.setBorderRight(BorderStyle.THIN);
+        // 设置右边框颜色;
+        style.setRightBorderColor(IndexedColors.BLACK.index);
+        // 设置顶边框;
+        style.setBorderTop(BorderStyle.THIN);
+        // 设置顶边框颜色;
+        style.setTopBorderColor(IndexedColors.BLACK.index);
+        // 在样式用应用设置的字体;
+        style.setFont(font);
+        // 设置自动换行;
+        style.setWrapText(false);
+        // 设置水平对齐的样式为居中对齐;
+        style.setAlignment(HorizontalAlignment.CENTER);
+        // 设置垂直对齐的样式为居中对齐;
+        style.setVerticalAlignment(VerticalAlignment.CENTER);
+
+        return style;
+    }
+
+    /**
+     * 列数据信息单元格样式
+     */
+    private HSSFCellStyle getCustomCellStyle(HSSFWorkbook workbook) {
+        // 设置字体
+        HSSFFont font = workbook.createFont();
+        // 设置字体大小
+        // font.setFontHeightInPoints((short)10);
+        // 字体加粗
+        // font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
+        // 设置字体名字
+        font.setFontName("Courier New");
+        // 设置样式;
+        HSSFCellStyle style = workbook.createCellStyle();
+        // 设置底边框;
+        style.setBorderBottom(BorderStyle.THIN);
+        // 设置底边框颜色;
+        style.setBottomBorderColor(IndexedColors.BLACK.index);
+        // 设置左边框;
+        style.setBorderLeft(BorderStyle.THIN);
+        // 设置左边框颜色;
+        style.setLeftBorderColor(IndexedColors.BLACK.index);
+        // 设置右边框;
+        style.setBorderRight(BorderStyle.THIN);
+        // 设置右边框颜色;
+        style.setRightBorderColor(IndexedColors.BLACK.index);
+        // 设置顶边框;
+        style.setBorderTop(BorderStyle.THIN);
+        // 设置顶边框颜色;
+        style.setTopBorderColor(IndexedColors.BLACK.index);
+        // 在样式用应用设置的字体;
+        style.setFont(font);
+        // 设置自动换行;
+        style.setWrapText(false);
+        // 设置水平对齐的样式为居中对齐;
+        style.setAlignment(HorizontalAlignment.CENTER);
+        // 设置垂直对齐的样式为居中对齐;
+        style.setVerticalAlignment(VerticalAlignment.CENTER);
+        return style;
+    }
 }

+ 49 - 105
src/main/java/com/caimei/modules/hehe/web/HeHeNewOrderController.java

@@ -9,6 +9,7 @@ import com.caimei.modules.hehe.service.HeHeNewOrderService;
 import com.caimei.modules.order.dao.CmDiscernReceiptDao;
 import com.caimei.modules.order.dao.CmReceiptOrderRelationDao;
 import com.caimei.modules.order.dao.CmReturnedPurchaseDao;
+import com.caimei.modules.order.dao.NewOrderProductDao;
 import com.caimei.modules.order.entity.*;
 import com.caimei.modules.order.service.CmDiscernReceiptService;
 import com.caimei.modules.order.service.CmReceiptOrderRelationService;
@@ -24,14 +25,13 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.ModelAttribute;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.OutputStream;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -64,6 +64,8 @@ public class HeHeNewOrderController extends BaseController {
     private CmDiscernReceiptDao cmDiscernReceiptDao;
     @Autowired
     private CmReceiptOrderRelationService cmReceiptOrderRelationService;
+    @Resource
+    private NewOrderProductDao newOrderProductDao;
 
     @ModelAttribute
     public NewOrder get(@RequestParam(required = false) String id) {
@@ -245,115 +247,57 @@ public class HeHeNewOrderController extends BaseController {
         return "redirect:" + Global.getAdminPath() + "/hehe/new/order/detail/?id=" + orderID;
     }
 
-    /*@RequestMapping(value = "batchExportOrder")
-    public void exportTest(String startTime, String endTime, CmDiscernReceipt cmDiscernReceipt, RedirectAttributes redirectAttributes, HttpServletRequest request, HttpServletResponse response) {
+    @RequestMapping(value = "batchExportOrder")
+    @ResponseBody
+    public String batchExportOrder(NewOrder order, RedirectAttributes redirectAttributes, HttpServletRequest request, HttpServletResponse response) {
         //获取订单数据
-        String fileName = "收款账单.xls";
+        String fileName = "呵呵订单.xls";
         String template = Global.getConfig("export.template");
-        String templateFileName = template + "/discern_receipt_export.xls";
+        String templateFileName = template + "/hehe_order_export.xls";
         List<String> listSheetNames = new ArrayList<String>();
+        // 表格数据
         ArrayList<List> objects = new ArrayList<List>();
-        //收款时间筛查
-        if (startTime == null) {
-            cmDiscernReceipt.setStartTime("2019-10-01 00:00:00");
-        } else {
-            cmDiscernReceipt.setStartTime(startTime);
+        if (null != order.getStartTime() && !"".equals(order.getStartTime()) && !order.getStartTime().endsWith("00:00:00")) {
+            order.setStartTime(order.getStartTime() + " 00:00:00");
         }
-        if (endTime == null) {
-            cmDiscernReceipt.setEndTime("2019-10-31 23:59:59");
-        } else {
-            cmDiscernReceipt.setEndTime(endTime);
+        if (null != order.getEndTime() && !"".equals(order.getEndTime()) && !order.getEndTime().endsWith("23:59:59")) {
+            order.setEndTime(order.getEndTime() + " 23:59:59");
+        }
+        if (null != order.getStartConfirmTime() && !"".equals(order.getStartConfirmTime()) && !order.getStartConfirmTime().endsWith("00:00:00")) {
+            order.setStartConfirmTime(order.getStartConfirmTime() + " 00:00:00");
+        }
+        if (null != order.getEndConfirmTime() && !"".equals(order.getEndConfirmTime()) && !order.getEndConfirmTime().endsWith("23:59:59")) {
+            order.setEndConfirmTime(order.getEndConfirmTime() + " 23:59:59");
+        }
+        if (null != order.getStartRefundTime() && !"".equals(order.getStartRefundTime()) && !order.getStartRefundTime().endsWith("00:00:00")) {
+            order.setStartRefundTime(order.getStartRefundTime() + " 00:00:00");
+        }
+        if (null != order.getEndRefundTime() && !"".equals(order.getEndRefundTime()) && !order.getEndRefundTime().endsWith("23:59:59")) {
+            order.setEndRefundTime(order.getEndRefundTime() + " 23:59:59");
+        }
+        if (null != order.getBuyer()) {
+            order.setBuyer(order.getBuyer().trim());
         }
+        if (null != order.getReceiver()) {
+            order.setReceiver(order.getReceiver().trim());
+        }
+        //查询内部处理了已收,未付统计(包含运费)
+        List<NewOrder> orderList = heHeNewOrderService.findList(order);
+        orderList.forEach(heheOrder->{
+            List<NewOrderProduct> productList = newOrderProductDao.findListByOrderID(heheOrder.getOrderID());
+            heheOrder.setNewOrderProducts(productList);
+        });
         try {
-
-            List<CmMainReceiptExport> list = cmDiscernReceiptService.exportTest(cmDiscernReceipt);
-            for (CmMainReceiptExport bean : list) {
-                String productNames = bean.getProductNames();
-                if (StringUtils.isNotEmpty(productNames)) {
-                    String[] productNameArr = productNames.split(",");
-                    for (int i = 0; i < productNameArr.length; i++) {
-                        productNameArr[i] = (i + 1) + "." + productNameArr[i] + "\r\n";
-                        productNames = i==0?productNameArr[i]:productNames + productNameArr[i];
-                    }
-                    bean.setProductNames(productNames);
-                }
-                bean.setPayType(OrderUtil.getPayTypeStr(bean.getPayType()));
-            }
-            //返佣数据
-            List<CmMainReceiptExport> list1 = cmDiscernReceiptService.exportRebate(cmDiscernReceipt);
-            for (CmMainReceiptExport export : list1) {
-                export.setPayType(OrderUtil.getPayTypeStr(export.getPayType()));
-                export.setOrderID(export.getOrderID() + ("5".equals(export.getReceiptType())?"(供应商退款订单)":"(返佣订单)"));
-                list.add(export);
-            }
-            //非订单款
-            List<CmMainReceiptExport> list2 = cmDiscernReceiptService.theOrder(cmDiscernReceipt);
-            for (CmMainReceiptExport export : list2) {
-                export.setOrderID("非订单");
-                export.setUserName("");
-                export.setPayType(OrderUtil.getPayTypeStr(export.getPayType()));
-                list.add(export);
-            }
-
-            //退款记录表
-            List<CmReturnedPurchase> purchases = cmDiscernReceiptService.exportRefund(cmDiscernReceipt);
-            for (CmReturnedPurchase purchase : purchases) {
-                String refundWay = "";
-                if ("1".equals(purchase.getReturnedWay())) {
-                    if (purchase.getRefundBalanceFee() != null && purchase.getRefundBalanceFee() != 0) {
-                        refundWay += "账户余额";
-                    }
-                    if (purchase.getRefundOnlineFee() != null && purchase.getRefundOnlineFee() != 0) {
-                        refundWay += ";线上退回";
-                    }
-                    if (purchase.getRefundOfflineFee() != null && purchase.getRefundOfflineFee() != 0) {
-                        refundWay += ";线下转账";
-                    }
-                }
-                purchase.setReturnedWay(refundWay);
-                String payType = OrderUtil.getPayType(purchase.getPayType());
-                purchase.setPayType(payType);
-            }
-
-            //超级会员款
-            List<CmMainReceiptExport> svipList = cmDiscernReceiptService.svipReceipt(cmDiscernReceipt);
-            for (CmMainReceiptExport export : svipList) {
-                export.setOrderID("超级会员款");
-                export.setPayType(OrderUtil.getPayTypeStr(export.getPayType()));
-                list.add(export);
-            }
-
-            //二手商品上架费
-            List<CmMainReceiptExport> secondList = cmDiscernReceiptService.secondReceipt(cmDiscernReceipt);
-            for (CmMainReceiptExport export : secondList) {
-                export.setOrderID("二手商品上架费");
-                export.setUserName("");
-                export.setPayType(OrderUtil.getPayTypeStr(export.getPayType()));
-                list.add(export);
-            }
-
-            //	收款进度  1待收  2部分收  3全收
-            cmDiscernReceipt.setReceiptProgress("2");
-            List<CmReceiptExportData> ListExportData1 = getListExportData(cmDiscernReceipt);
-            cmDiscernReceipt.setReceiptProgress("3");
-            List<CmReceiptExportData> ListExportData2 = getListExportData(cmDiscernReceipt);
-
-            objects.add(list);
-            *//*objects.add(ListExportData1);
-            objects.add(ListExportData2);
-            objects.add(getListOrderPayment(cmDiscernReceipt));
-            objects.add(purchases);*//*
-            listSheetNames.add("收款表");
-            *//*listSheetNames.add("部分收款");
-            listSheetNames.add("已收款");
-            listSheetNames.add("返佣订单");
-            listSheetNames.add("退款记录表");*//*
-
-            new ExcelUtil().createMultipleSheetsExcel(templateFileName, fileName, listSheetNames, objects, response);
+            OutputStream outputStream = response.getOutputStream();
+            response.reset();
+            response.setHeader("Content-disposition",
+                    "attachment; filename=" + fileName);
+            response.setContentType("application/vnd.ms-excel");
+            return heHeNewOrderService.batchExportOrder(orderList, outputStream);
         } catch (Exception e) {
-            addMessage(redirectAttributes, "收款列表导出失败!" + e.getMessage());
-            logger.info(e.getMessage());
             e.printStackTrace();
+            return "导出失败";
         }
-    }*/
-}
+
+    }
+}

+ 9 - 0
src/main/java/com/caimei/modules/order/entity/NewOrder.java

@@ -122,6 +122,7 @@ public class NewOrder extends DataEntity<NewOrder> {
     private Double returnValue;  //退款总金额
     private Boolean returnedFreightFlag;//机构运费退货标识
     private String clubName;  //会所名称
+    private List<NewOrderProduct> newOrderProducts;  // 订单商品列表
 
     // 收款确认类型(1小额抹平确认,2大额抹平确认,3大额退款余额,4确认关联)
     private String confirmType;
@@ -1147,5 +1148,13 @@ public class NewOrder extends DataEntity<NewOrder> {
     public void setReductionTouchPrice(Double reductionTouchPrice) {
         this.reductionTouchPrice = reductionTouchPrice;
     }
+
+    public List<NewOrderProduct> getNewOrderProducts() {
+        return newOrderProducts;
+    }
+
+    public void setNewOrderProducts(List<NewOrderProduct> newOrderProducts) {
+        this.newOrderProducts = newOrderProducts;
+    }
 }
 

+ 11 - 0
src/main/webapp/WEB-INF/views/modules/hehe/heheNewOrderList.jsp

@@ -662,6 +662,14 @@
                 }
             }, "JSON");//这里返回的类型有:json,html,xml,text
         };
+
+        function orderExport() {
+            debugger
+            var searchForm = $("#searchForm");
+            searchForm.attr('action', '${ctx}/hehe/new/order/batchExportOrder');
+            searchForm.submit();
+            searchForm.attr('action', '${ctx}/hehe/new/order/orderList');
+        }
     </script>
 </head>
 <body>
@@ -776,6 +784,9 @@
             <div class="item">
                 <input id="btnSubmit" class="btn btn-primary" type="submit" value="查询" style="margin-left: 20px;"/>
             </div>
+            <div class="item">
+                <a id="orderExport" class="btn btn-primary" href="javascript:;" onclick="orderExport()" style="width:100px; margin-left: 20px;">订单导出</a>
+            </div>
         </div>
     </div>
 </form:form>