1
0
Переглянути джерело

Merge branch 'feature/eccs-upgrade' of lvjian/eccs into feature/eccs-upgrade

吕健 2 роки тому
батько
коміт
dee62dce83

+ 4 - 2
eccs-biz/src/main/java/com/emato/biz/controller/warehouse/OWbMerchShopInveController.java

@@ -2,6 +2,7 @@ package com.emato.biz.controller.warehouse;
 
 import java.util.List;
 
+import com.emato.biz.domain.warehouse.PullInveQueryVO;
 import com.emato.common.core.domain.entity.SysDept;
 import com.emato.common.core.domain.entity.SysUser;
 import com.emato.common.core.domain.model.LoginUser;
@@ -114,7 +115,7 @@ public class OWbMerchShopInveController extends BaseController
 
     @PreAuthorize("@ss.hasPermi('biz:storeinvemng:pull')")
     @PostMapping("/pullStoreInveMng")
-    public AjaxResult pullStoreInveMng()
+    public AjaxResult pullStoreInveMng(PullInveQueryVO queryVO)
     {
 //        // 获取当前的用户
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
@@ -124,7 +125,8 @@ public class OWbMerchShopInveController extends BaseController
         // 获取当前商户号
         String merchSn = sysDept.getMerchSn();
 
-        return toAjax(oWbMerchShopInveService.pullStoreInveMng(merchSn));
+        return oWbMerchShopInveService.pullShopInve(queryVO);
+        //return toAjax(oWbMerchShopInveService.pullStoreInveMng(merchSn));
     }
 
 }

+ 70 - 0
eccs-biz/src/main/java/com/emato/biz/domain/warehouse/Page.java

@@ -0,0 +1,70 @@
+package com.emato.biz.domain.warehouse;
+
+import java.util.List;
+
+/**
+ * 分页对象
+ *
+ * @author frankeleyn
+ * @email lvjian@qhdswl.com
+ * @date 2023/4/19 11:36
+ */
+public class Page<T> {
+    // 分页数据
+    private List<T> list;
+    // 页数
+    private int page;
+    // 总页数
+    private int totalPage;
+    // 总条数
+    private int total;
+
+    @Override
+    public String toString() {
+        return "Page{" +
+                "list=" + list +
+                ", page=" + page +
+                ", totalPage=" + totalPage +
+                ", total=" + total +
+                '}';
+    }
+
+    public Page() {}
+
+    public Page(List<T> list, int totalPage) {
+        this.list = list;
+        this.totalPage = totalPage;
+    }
+
+    public List<T> getList() {
+        return list;
+    }
+
+    public void setList(List<T> list) {
+        this.list = list;
+    }
+
+    public int getPage() {
+        return page;
+    }
+
+    public void setPage(int page) {
+        this.page = page;
+    }
+
+    public int getTotalPage() {
+        return totalPage;
+    }
+
+    public void setTotalPage(int totalPage) {
+        this.totalPage = totalPage;
+    }
+
+    public int getTotal() {
+        return total;
+    }
+
+    public void setTotal(int total) {
+        this.total = total;
+    }
+}

+ 2 - 2
eccs-biz/src/main/java/com/emato/biz/domain/warehouse/PullInveQueryVO.java

@@ -29,12 +29,12 @@ public class PullInveQueryVO {
     /**
      * 页
      */
-    private Integer page = 1;
+    private Integer page;
 
     /**
      * 页数
      */
-    private Integer limit = 3;
+    private Integer limit;
 
     @Override
     public String toString() {

+ 111 - 38
eccs-biz/src/main/java/com/emato/biz/service/impl/OWbInveMngServiceImpl.java

@@ -2,22 +2,25 @@ package com.emato.biz.service.impl;
 
 import java.io.IOException;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.atomic.AtomicInteger;
 
-import cn.hutool.http.HttpException;
 import cn.hutool.http.HttpRequest;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.emato.biz.config.OmsConfig;
+import com.emato.biz.domain.warehouse.Page;
 import com.emato.biz.domain.warehouse.PullInveQueryVO;
 import com.emato.biz.mapper.warehouse.WbInveMngMapper;
+import com.emato.biz.util.JsonUtil;
+import com.emato.biz.util.OmsDataUtil;
 import com.emato.common.core.domain.AjaxResult;
 import com.emato.common.exception.ServiceException;
 import com.emato.common.utils.DateUtils;
 import com.emato.common.utils.oms.JacksonUtils;
-import com.emato.common.utils.oms.OkHttpUtils;
 import com.emato.common.utils.oms.request.OmsSign;
-import okhttp3.Request;
 import org.apache.http.HttpStatus;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpPost;
@@ -27,6 +30,7 @@ import org.apache.http.impl.client.HttpClients;
 import org.apache.http.util.EntityUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.emato.biz.mapper.warehouse.OWbInveMngMapper;
@@ -53,6 +57,8 @@ public class OWbInveMngServiceImpl implements IOWbInveMngService
 
     private static final Logger log = LoggerFactory.getLogger(OWbInveMngServiceImpl.class);
 
+    @Autowired
+    private ThreadPoolExecutor threadPoolExecutor;
 
     /**
      * 根据条件拉取 OMS 数据
@@ -62,43 +68,51 @@ public class OWbInveMngServiceImpl implements IOWbInveMngService
      */
     @Override
     public AjaxResult pullInveMng(PullInveQueryVO queryVO) {
-        // 构建请求报文
-        // 初始化请求 oms 参数 Map
-        Map<String, String> reqOmsPram = new TreeMap<>();
-        queryVO.setThirdMerchId("tmb770630141444423680");
-        // 请求 oms 数据
-        reqOmsPram.put("data", JacksonUtils.toJsonStr(queryVO));
-        // 请求 oms 商户号
-        reqOmsPram.put("merchId", OmsConfig.getMerchSn());
-        log.debug("===== 请求 oms 商户号 ====> {}", OmsConfig.getMerchSn());
-        // 请求 oms 时间戳
-        String timestamp = System.currentTimeMillis()/1000 + "";
-        reqOmsPram.put("timestamp", timestamp);
-        log.debug("===== 请求 oms 时间戳 ====> {}", timestamp);
-        // 请求 oms 签名
-        String sign = OmsSign.sign(reqOmsPram, OmsConfig.getMd5Salt());
-        reqOmsPram.put("sign", sign);
-        // oms 请求地址
-        String url = OmsConfig.getQueryMngInveUrl();
-        log.debug("===== 请求 oms 地址 ====> {}", url);
-        // 请求 oms 报文
-        String reqBody = JacksonUtils.toJsonStr(reqOmsPram);
-        log.debug("===== 请求 oms 报文 ====> {}", reqBody);
-
-        // oms 返回数据
-        String body = null;
-        try {
-            body = HttpRequest.post(url)
-                    .body(JacksonUtils.toJsonStr(reqOmsPram))
-                    .execute()
-                    .body();
-        } catch (Exception e) {
-            throw new ServiceException("请求 OMS 异常!");
-        }
-        log.debug("OMS 响应信息 => {}", body);
+        // 声明处理数量
+        AtomicInteger rows = new AtomicInteger(0);
+        // 声明页数
+        int page = 1;
+        queryVO.setPage(page);
+        queryVO.setLimit(10);
+
+        // 查询 OMS 分页数据
+        Optional<Page<OWbInveMng>> firstPageOpt =
+                OmsDataUtil.fetchOmsPageData(queryVO, OmsConfig.getQueryMngInveUrl(), OWbInveMng.class);
+
+        // 如果有数据
+        firstPageOpt.ifPresent(firstPage -> {
+            // 如果有数据,开始批量处理
+            firstPage.getList().forEach(obj -> log.debug("拉取的 sku => {}", obj.getSku()));
+            // 插入数据库
+            firstPage.getList().stream().forEach(obj -> {
+                // 插入数据库
+                wbInveMngMapper.saveOrUpdate(obj);
+                // 处理数据条数加 1
+                rows.getAndIncrement();
+            });
+
+            List<CompletableFuture<Void>> tasks = new ArrayList<>();
+
+            for(int pageNum = 2; pageNum <= firstPage.getTotalPage(); pageNum++) {
+                log.debug("当前拉取的页数 => {}", pageNum);
+                queryVO.setPage(pageNum);
+                // 分页拉取远程数据
+                Optional<Page<OWbInveMng>> pageOpt = OmsDataUtil.fetchOmsPageData(queryVO, OmsConfig.getQueryMngInveUrl(), OWbInveMng.class);
+                pageOpt.get().getList().forEach(obj -> {
+                    wbInveMngMapper.saveOrUpdate(obj);
+                    rows.getAndIncrement();
+                });
+                // 查询 OMS 数据
+                /*CompletableFuture<Void> task = CompletableFuture.runAsync(() -> {
+                }, threadPoolExecutor);
+                // 将任务添加到列表中
+                tasks.add(task);*/
+            }
+            CompletableFuture.allOf(tasks.toArray(new CompletableFuture[0])).join();
 
+        });
 
-        // 获取响应,入库
+        log.debug("拉取库存成功,拉取数据条数 => {}", rows.get());
         return AjaxResult.success("拉取库存成功!");
     }
 
@@ -303,4 +317,63 @@ public class OWbInveMngServiceImpl implements IOWbInveMngService
         return jsonResult;
     }
 
+    /**
+     * 拉取 OMS 库存数据
+     *
+     * @param queryVO 请求 OMS 数据
+     * @param url 请求 OMS 地址
+     * @param clazz 返回的分页数据类
+     *
+     * @return
+     */
+    private <T> Optional<Page<T>> fetchOmsPageData(PullInveQueryVO queryVO,
+                                               String url,
+                                               Class<T> clazz) {
+        // 构建请求报文
+        // 初始化请求 oms 参数 Map
+        Map<String, String> reqOmsPram = new TreeMap<>();
+        // 请求 oms 数据
+        reqOmsPram.put("===== data ====> {}", JacksonUtils.toJsonStr(queryVO));
+        // 请求 oms 商户号
+        reqOmsPram.put("merchId", OmsConfig.getMerchSn());
+        log.debug("===== 请求 oms 商户号 ====> {}", OmsConfig.getMerchSn());
+        // 请求 oms 时间戳
+        String timestamp = System.currentTimeMillis()/1000 + "";
+        reqOmsPram.put("timestamp", timestamp);
+        log.debug("===== 请求 oms 时间戳 ====> {}", timestamp);
+        // 请求 oms 签名
+        String sign = OmsSign.sign(reqOmsPram, OmsConfig.getMd5Salt());
+        reqOmsPram.put("sign", sign);
+        // oms 请求地址
+        log.debug("===== 请求 oms 地址 ====> {}", url);
+        // 请求 oms 报文
+        String reqBody = JacksonUtils.toJsonStr(reqOmsPram);
+        log.debug("===== 请求 oms 报文 ====> {}", reqBody);
+
+        // oms 返回数据
+        String body = null;
+        try {
+            body = HttpRequest.post(url)
+                    .body(JacksonUtils.toJsonStr(reqOmsPram))
+                    .execute()
+                    .body();
+        } catch (Exception e) {
+            throw new ServiceException("请求 OMS 异常!");
+        }
+        log.debug("OMS 响应信息 => {}", body);
+
+        // 解析返回的数据
+        JSONObject jsonObject = JSONObject.parseObject(body);
+        String code = jsonObject.getString("code");
+
+        if ("200".equals(code)){
+            Page<T> page = JsonUtil.parsePage(jsonObject, clazz);
+            if (!page.getList().isEmpty())
+                // 如果 page 有值就返回
+                return Optional.of(page);
+        }
+
+        return Optional.empty();
+    }
+
 }

+ 69 - 10
eccs-biz/src/main/java/com/emato/biz/service/impl/OWbMerchShopInveServiceImpl.java

@@ -1,16 +1,19 @@
 package com.emato.biz.service.impl;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
+import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.emato.biz.config.OmsConfig;
 import com.emato.biz.domain.warehouse.OWbInveMng;
+import com.emato.biz.domain.warehouse.Page;
+import com.emato.biz.domain.warehouse.PullInveQueryVO;
 import com.emato.biz.mapper.warehouse.WbMerchShopInveMapper;
+import com.emato.biz.util.OmsDataUtil;
+import com.emato.common.core.domain.AjaxResult;
 import com.emato.common.exception.ServiceException;
 import com.emato.common.utils.DateUtils;
 import com.emato.common.utils.oms.request.OkHttpUtils;
@@ -41,7 +44,63 @@ public class OWbMerchShopInveServiceImpl implements IOWbMerchShopInveService
     @Resource
     private WbMerchShopInveMapper wbMerchShopInveMapper;
 
-    private static final Logger LOGGER = LoggerFactory.getLogger(OWbMerchShopInveServiceImpl.class);
+    private static final Logger log = LoggerFactory.getLogger(OWbMerchShopInveServiceImpl.class);
+
+    /**
+     * 拉取门店库存数据
+     *
+     * @param queryVO
+     * @return
+     */
+    @Override
+    public AjaxResult pullShopInve(PullInveQueryVO queryVO) {
+        // 声明处理数量
+        AtomicInteger rows = new AtomicInteger(0);
+        // 声明页数
+        int page = 1;
+        queryVO.setPage(page);
+        queryVO.setLimit(10);
+
+        // 查询 OMS 分页数据
+        Optional<Page<OWbMerchShopInve>> firstPageOpt =
+                OmsDataUtil.fetchOmsPageData(queryVO, OmsConfig.getQueryMngInveUrl(), OWbMerchShopInve.class);
+
+        // 如果有数据
+        firstPageOpt.ifPresent(firstPage -> {
+            // 如果有数据,开始批量处理
+            firstPage.getList().forEach(obj -> log.debug("拉取的 sku => {}", obj.getSku()));
+            // 插入数据库
+            firstPage.getList().stream().forEach(obj -> {
+                // 插入数据库
+                wbMerchShopInveMapper.saveOrUpdate(obj);
+                // 处理数据条数加 1
+                rows.getAndIncrement();
+            });
+
+            List<CompletableFuture<Void>> tasks = new ArrayList<>();
+
+            for(int pageNum = 2; pageNum <= firstPage.getTotalPage(); pageNum++) {
+                log.debug("当前拉取的页数 => {}", pageNum);
+                queryVO.setPage(pageNum);
+                // 分页拉取远程数据
+                Optional<Page<OWbMerchShopInve>> pageOpt = OmsDataUtil.fetchOmsPageData(queryVO, OmsConfig.getQueryShopMngInveUrl(), OWbMerchShopInve.class);
+                pageOpt.get().getList().forEach(obj -> {
+                    wbMerchShopInveMapper.saveOrUpdate(obj);
+                    rows.getAndIncrement();
+                });
+                // 查询 OMS 数据
+                /*CompletableFuture<Void> task = CompletableFuture.runAsync(() -> {
+                }, threadPoolExecutor);
+                // 将任务添加到列表中
+                tasks.add(task);*/
+            }
+            CompletableFuture.allOf(tasks.toArray(new CompletableFuture[0])).join();
+
+        });
+
+        log.debug("拉取门店库存成功,拉取数据条数 => {}", rows.get());
+        return AjaxResult.success("拉取门店库存成功!");
+    }
 
     /**
      * 查询商户店面库存,包括跨境,一般贸易
@@ -142,13 +201,13 @@ public class OWbMerchShopInveServiceImpl implements IOWbMerchShopInveService
         String timestamp = String.valueOf(System.currentTimeMillis()/1000);
         sParaTemp.put("timestamp", timestamp);
         //生成要请求给 oms 秘钥
-        LOGGER.info("md5混淆码参数:" + OmsConfig.getMd5Salt());
+        log.info("md5混淆码参数:" + OmsConfig.getMd5Salt());
         String sign = OmsSign.sign(sParaTemp,OmsConfig.getMd5Salt());
         sParaTemp.put("sign", sign);
         //构建 Request
         String  url = OmsConfig.getQueryShopMngInveUrl();
         Request request = OkHttpUtils.buildRequest(url, JSON.toJSONString(sParaTemp));
-        LOGGER.info("oms的请求报文:" + request);
+        log.info("oms的请求报文:" + request);
         // 同步访问,返回结果字符串
         String responseString = null;
         try {
@@ -156,12 +215,12 @@ public class OWbMerchShopInveServiceImpl implements IOWbMerchShopInveService
             responseString = OkHttpUtils.post(request);
 
         } catch (Exception e) {
-            LOGGER.error("拉取 OMS 门店库存数据异常 => ", e);
+            log.error("拉取 OMS 门店库存数据异常 => ", e);
             throw new ServiceException("拉取 OMS 门店库存数据异常");
         }
 
         try {
-            LOGGER.info("oms的响应报文"+responseString);
+            log.info("oms的响应报文"+responseString);
 
             //解析响应数据
             JSONObject jsonObject = JSONObject.parseObject(responseString);
@@ -182,7 +241,7 @@ public class OWbMerchShopInveServiceImpl implements IOWbMerchShopInveService
                 wbMerchShopInveMapper.saveOrUpdate(oWbMerchShopInve);
             }
         } catch (Exception e) {
-            LOGGER.error("拉取 OMS 数据后,插入数据异常 => ", e);
+            log.error("拉取 OMS 数据后,插入数据异常 => ", e);
             throw new ServiceException("拉取 OMS 门店库存数据异常");
             //return 1;
         }

+ 11 - 0
eccs-biz/src/main/java/com/emato/biz/service/warehouse/IOWbMerchShopInveService.java

@@ -2,6 +2,8 @@ package com.emato.biz.service.warehouse;
 
 import java.util.List;
 import com.emato.biz.domain.warehouse.OWbMerchShopInve;
+import com.emato.biz.domain.warehouse.PullInveQueryVO;
+import com.emato.common.core.domain.AjaxResult;
 
 /**
  * 商户店面库存,包括跨境,一般贸易Service接口
@@ -11,6 +13,15 @@ import com.emato.biz.domain.warehouse.OWbMerchShopInve;
  */
 public interface IOWbMerchShopInveService
 {
+
+    /**
+     * 拉取门店库存数据
+     *
+     * @param queryVO
+     * @return
+     */
+    AjaxResult pullShopInve(PullInveQueryVO queryVO);
+
     /**
      * 查询商户店面库存,包括跨境,一般贸易
      *

+ 43 - 0
eccs-biz/src/main/java/com/emato/biz/util/JsonUtil.java

@@ -0,0 +1,43 @@
+package com.emato.biz.util;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.emato.biz.domain.warehouse.Page;
+import com.emato.biz.service.impl.OWbInveMngServiceImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+/**
+ * Json 工具类
+ *
+ * @author frankeleyn
+ * @email lvjian@qhdswl.com
+ * @date 2023/4/19 11:38
+ */
+public class JsonUtil {
+
+    private static final Logger log = LoggerFactory.getLogger(JsonUtil.class);
+
+    /**
+     * 解析数据为 Page 对象
+     *
+     * @param jsonObject 目标解析数据
+     * @param clazz 类的类型
+     * @return
+     */
+    public static <T> Page<T> parsePage(JSONObject jsonObject, Class<T> clazz){
+        // 解析数据
+        JSONObject data = jsonObject.getJSONObject("data");
+        // 获取总页数
+        Integer totalPage = data.getInteger("totalPage");
+        // 获取数据
+        JSONArray listJsonArray = data.getJSONArray("list");
+        // 解析数据为 List
+        List<T> list = JSON.parseArray(listJsonArray.toJSONString(), clazz);
+        return new Page<>(list, totalPage);
+    }
+
+}

+ 92 - 0
eccs-biz/src/main/java/com/emato/biz/util/OmsDataUtil.java

@@ -0,0 +1,92 @@
+package com.emato.biz.util;
+
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSONObject;
+import com.emato.biz.config.OmsConfig;
+import com.emato.biz.domain.warehouse.Page;
+import com.emato.biz.domain.warehouse.PullInveQueryVO;
+import com.emato.biz.service.impl.OWbInveMngServiceImpl;
+import com.emato.common.exception.ServiceException;
+import com.emato.common.utils.oms.JacksonUtils;
+import com.emato.common.utils.oms.request.OmsSign;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Map;
+import java.util.Optional;
+import java.util.TreeMap;
+
+/**
+ * OMS 数据工具类
+ *
+ * @author frankeleyn
+ * @email lvjian@qhdswl.com
+ * @date 2023/4/19 14:25
+ */
+public class OmsDataUtil {
+
+    private static final Logger log = LoggerFactory.getLogger(OWbInveMngServiceImpl.class);
+
+    /**
+     * 拉取 OMS 库存数据
+     *
+     * @param queryVO 请求 OMS 数据
+     * @param url 请求 OMS 地址
+     * @param clazz 返回的分页数据类
+     *
+     * @return
+     */
+    public static <T> Optional<Page<T>> fetchOmsPageData(PullInveQueryVO queryVO,
+                                                          String url,
+                                                          Class<T> clazz) {
+        // 构建请求报文
+        // 初始化请求 oms 参数 Map
+        Map<String, String> reqOmsPram = new TreeMap<>();
+        // 请求 oms 数据
+        reqOmsPram.put("data", JacksonUtils.toJsonStr(queryVO));
+        // 请求 oms 商户号
+        reqOmsPram.put("merchId", OmsConfig.getMerchSn());
+        log.debug("===== 请求 oms 商户号 ====> {}", OmsConfig.getMerchSn());
+        // 请求 oms 时间戳
+        String timestamp = System.currentTimeMillis() / 1000 + "";
+        reqOmsPram.put("timestamp", timestamp);
+        log.debug("===== 请求 oms 时间戳 ====> {}", timestamp);
+        // 请求 oms 签名
+        String sign = OmsSign.sign(reqOmsPram, OmsConfig.getMd5Salt());
+        reqOmsPram.put("sign", sign);
+        // oms 请求地址
+        log.debug("===== 请求 oms 地址 ====> {}", url);
+        // 请求 oms 报文
+        String reqBody = JacksonUtils.toJsonStr(reqOmsPram);
+        log.debug("===== 请求 oms 报文 ====> {}", reqBody);
+
+        // oms 返回数据
+        String body = null;
+        try {
+            body = HttpRequest.post(url)
+                    .body(JacksonUtils.toJsonStr(reqOmsPram))
+                    .execute()
+                    .body();
+        } catch (Exception e) {
+            log.error("请求 OMS 异常 => ", e);
+            throw new ServiceException("请求 OMS 异常!");
+        }
+        log.debug("OMS 响应信息 => {}", body);
+
+        // 解析返回的数据
+        JSONObject jsonObject = JSONObject.parseObject(body);
+        String code = jsonObject.getString("code");
+
+        if ("200".equals(code)){
+            Page<T> page = JsonUtil.parsePage(jsonObject, clazz);
+            if (!page.getList().isEmpty())
+                // 如果 page 有值就返回
+                return Optional.of(page);
+        }else {
+            throw new ServiceException(jsonObject.getString("msg"));
+        }
+
+        return Optional.empty();
+    }
+
+}

+ 16 - 18
eccs-framework/src/main/java/com/emato/framework/config/ThreadPoolConfig.java

@@ -1,8 +1,7 @@
 package com.emato.framework.config;
 
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.*;
+
 import org.apache.commons.lang3.concurrent.BasicThreadFactory;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -18,28 +17,27 @@ import com.emato.common.utils.Threads;
 public class ThreadPoolConfig
 {
     // 核心线程池大小
-    private int corePoolSize = 50;
+    private final int corePoolSize = 4;
 
     // 最大可创建的线程数
-    private int maxPoolSize = 200;
+    private final int maxPoolSize = 8;
 
     // 队列最大长度
-    private int queueCapacity = 1000;
+    private final int queueCapacity = 1000;
 
     // 线程池维护线程所允许的空闲时间
-    private int keepAliveSeconds = 300;
+    private final int keepAliveSeconds = 60;
 
-    @Bean(name = "threadPoolTaskExecutor")
-    public ThreadPoolTaskExecutor threadPoolTaskExecutor()
-    {
-        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
-        executor.setMaxPoolSize(maxPoolSize);
-        executor.setCorePoolSize(corePoolSize);
-        executor.setQueueCapacity(queueCapacity);
-        executor.setKeepAliveSeconds(keepAliveSeconds);
-        // 线程池对拒绝任务(无线程可用)的处理策略
-        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
-        return executor;
+    @Bean
+    public ThreadPoolExecutor threadPoolExecutor () {
+
+        return new ThreadPoolExecutor(
+                corePoolSize,
+                maxPoolSize,
+                keepAliveSeconds,
+                TimeUnit.SECONDS,
+                new LinkedBlockingQueue<>(queueCapacity)
+        );
     }
 
     /**