Ver Fonte

Merge branch 'master' of lhm/kmall-pt-general into master

杨波 há 3 anos atrás
pai
commit
9e69d47222

+ 39 - 7
kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java

@@ -1,7 +1,5 @@
 package com.kmall.admin.controller;
 
-import com.alibaba.fastjson.JSON;
-import com.google.gson.Gson;
 import com.kmall.admin.dto.OrderExpressDto;
 import com.kmall.admin.dto.SystemFormatDto;
 import com.kmall.admin.entity.*;
@@ -10,8 +8,6 @@ import com.kmall.admin.service.*;
 import com.kmall.admin.utils.CalculateTax;
 import com.kmall.admin.utils.ParamUtils;
 import com.kmall.admin.utils.ShiroUtils;
-import com.kmall.admin.utils.data.response.ResponseMessage;
-import com.kmall.admin.utils.oms.OmsSign;
 import com.kmall.common.constant.Dict;
 import com.kmall.common.constant.JxlsXmlTemplateName;
 import com.kmall.common.utils.*;
@@ -30,10 +26,10 @@ import com.kmall.manager.manager.wechat.WechatGlobalUtil;
 import com.kmall.manager.manager.wechat.WechatUtil;
 import com.kmall.manager.manager.wechat.wxglobal.dto.WechatGlobalRefundApiResult;
 import net.sf.json.JSONObject;
-import okhttp3.Request;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -44,7 +40,6 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.text.Bidi;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -1499,7 +1494,10 @@ public class OrderController {
 
         // =================================================System Format导出结束=====================================
 
-        ee.addSheetByMap("Daily sales report", list, header);
+        List<List<Map<String, Object>>> lists = splitList(list, page(list.size()));
+        for (int i = 0; i < lists.size(); i++) {
+            ee.addSheetByMap("Daily sales report " + (i + 1), lists.get(i), header);
+        }
         ee.export(response);
 
 
@@ -1550,5 +1548,39 @@ public class OrderController {
         return headerMap;
     }
 
+    /**
+     * 根据页数分割集合,分割后的集合一般都会少于3000
+     * 如果大于3000了可能会导出失败
+     * @param list  需要分割的list
+     * @param n     页数
+     * @return      分割后的list集合
+     */
+    public static <T> List<List<T>> splitList(List<T> list, int n){
+        List<List<T>> result = new ArrayList<>();
+        int remainder =list.size() % n;      // 先计算出余数
+        int number = list.size() / n;       // 然后是商
+        int offset = 0;                     // 偏移量
+        for (int i = 0; i < n; i++){
+            List<T> value;
+            if (remainder > 0){
+                value = list.subList(i * number + offset, (i + 1) * number + offset + 1);
+                remainder--;
+                offset++;
+            }else{
+                value = list.subList(i * number + offset, (i + 1) * number + offset);
+            }
+            result.add(value);
+        }
+        return result;
+    }
+
+    /**
+     * 根据集合大小判断有多少页
+     * @param size  集合大小
+     * @return      多少页
+     */
+    private int page(int size) {
+        return size % 3000 == 0 ? size / 3000 : (size / 3000) + 1;
+    }
 
 }

+ 36 - 25
kmall-admin/src/main/webapp/js/shop/offilineOrderList.js

@@ -526,36 +526,47 @@ let vm = new Vue({
         },
         exportSystemFormat : function () {
 
+            if (vm.flag) {
+                vm.flag = false;
+                var params = {};
+                params.orderSn=vm.q.orderSn,
+                    params.orderStatus=vm.q.orderStatus;
+                params.startTime=vm.q.startTime;
+                params.endTime=vm.q.endTime;
+                params.storeName=vm.q.storeName;
 
-            var params = {};
-            params.orderSn=vm.q.orderSn,
-            params.orderStatus=vm.q.orderStatus;
-            params.startTime=vm.q.startTime;
-            params.endTime=vm.q.endTime;
-            params.storeName=vm.q.storeName;
+                if(!params.startTime || !params.endTime){
+                    alert("请选择创建订单时间");
 
-            if(!params.startTime || !params.endTime){
-                alert("请选择创建订单时间");
-                return ;
-            }
-            let startDateTime = Date.parse(new Date(params.startTime));
-            let endDateTime = Date.parse(new Date(params.endTime));
-            if(startDateTime > endDateTime){
-                alert("创建订单开始时间不能大于创建订单结束时间");
-                return ;
-            }
+                    return ;
+                }
+                let startDateTime = Date.parse(new Date(params.startTime));
+                let endDateTime = Date.parse(new Date(params.endTime));
+                if(startDateTime > endDateTime){
+                    alert("创建订单开始时间不能大于创建订单结束时间");
+                    return ;
+                }
 
-            let day = Math.abs(parseInt((endDateTime - startDateTime)/1000/3600/24));
-            if(day > 30 || Object.is(day,NaN)){
-                alert("导出时间不能相差大于30天");
+                let day = Math.abs(parseInt((endDateTime - startDateTime)/1000/3600/24));
+                if(day > 30 || Object.is(day,NaN)){
+                    alert("导出时间不能相差大于30天");
+                    return ;
+                }
+                const msg = this.$Message.loading({
+                    content: 'Loading...',
+                    duration: 0
+                });
+                confirm('确认导出吗?', function () {
+                    setTimeout(msg, 1000);
+                    exportFile('#rrapp', '../order/exportSystemFormat', params);
+                    alert('操作成功,正在导出,请勿重复点击!');
+                });
+                vm.flag = true;
+            } else {
+                vm.flag = true;
+                alert('点击的太快了,请慢一点!');
                 return ;
             }
-            const msg = this.$Message.loading({
-                content: 'Loading...',
-                duration: 0
-            });
-            exportFile('#rrapp', '../order/exportSystemFormat', params);
-            setTimeout(msg, 1000);
         },
         exportSaleReportExcel:function(){
             const msg = this.$Message.loading({

+ 2 - 1
kmall-common/src/main/java/com/kmall/common/utils/excel/ExcelExport.java

@@ -22,6 +22,7 @@ import org.apache.poi.hssf.util.HSSFColor;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.ss.util.RegionUtil;
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
@@ -103,7 +104,7 @@ public class ExcelExport {
         } else if (exportFileName.endsWith(ExcelExport.EXCEL07_EXTENSION)) {
             workBook = new XSSFWorkbook();
         } else {
-            workBook = new XSSFWorkbook();
+            workBook = new SXSSFWorkbook(3000);
             fileName += ".xlsx";
             // 按正则替换? 处理文件名最后一个字符为“.” 的问题
             // fileName = fileName.replaceAll("..", ".");

+ 2 - 1
kmall-manager/src/main/java/com/kmall/manager/manager/redis/JedisUtil.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 import redis.clients.jedis.Jedis;
 import redis.clients.jedis.JedisPool;
 import redis.clients.jedis.JedisPoolConfig;
+import redis.clients.jedis.Protocol;
 import redis.clients.jedis.exceptions.JedisException;
 
 import java.io.Serializable;
@@ -43,7 +44,7 @@ public class JedisUtil implements Serializable {
             config.setTestOnBorrow(Boolean.parseBoolean(jp.getPool().getTestOnBorrow()));
             String redisIp = jp.getHost();
             int port = Integer.parseInt(jp.getPort());
-            jedisPool = new JedisPool(config, redisIp, port, 10000);
+            jedisPool = new JedisPool(config, redisIp, port, 10000, jp.getPassword(), Protocol.DEFAULT_DATABASE);
 
             logger.info("redis连接成功: {}:{}, ", redisIp, port);
         } catch (Exception e) {

+ 1 - 0
kmall-manager/src/main/resources/conf/redis.properties

@@ -6,6 +6,7 @@ redis.env=prod
 # \u5F00\u53D1\u73AF\u5883
 redis.dev.keyPrefix=platform
 redis.dev.host=127.0.0.1
+redis.dev.password=Abc-123#*.-
 redis.dev.port=6379
 redis.dev.pool.maxIdle=200
 redis.dev.pool.maxWait=1000

+ 1 - 0
kmall-manager/src/main/resources/spring/spring-redis.xml

@@ -36,6 +36,7 @@
         <property name="keyPrefix" value="${redis.dev.keyPrefix}"/>
         <property name="host" value="${redis.dev.host}"/>
         <property name="port" value="${redis.dev.port}"/>
+        <property name="password" value="${redis.prod.password}"/>
         <property name="pool">
             <bean class="com.kmall.manager.manager.redis.JedisProperties$Pool">
                 <property name="maxIdle" value="${redis.dev.pool.maxIdle}"/>