|
@@ -4,11 +4,12 @@ import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.date.DateUnit;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
-import cn.hutool.core.thread.ThreadUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
|
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
|
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.fjhx.common.constant.SourceConstant;
|
|
|
import com.fjhx.item.entity.product.po.ProductInfo;
|
|
|
import com.fjhx.item.service.product.ProductInfoService;
|
|
@@ -35,7 +36,6 @@ import com.fjhx.victoriatourist.service.jd.JdOrderService;
|
|
|
import com.fjhx.victoriatourist.service.jd.constants.InitDictConstant;
|
|
|
import com.fjhx.victoriatourist.service.jd.constants.JdParamConstant;
|
|
|
import com.fjhx.victoriatourist.service.jd.constants.RunParamConstant;
|
|
|
-import com.fjhx.victoriatourist.service.jd.factory.JdClientFactory;
|
|
|
import com.google.common.collect.HashBasedTable;
|
|
|
import com.google.common.collect.Table;
|
|
|
import com.jd.open.api.sdk.JdClient;
|
|
@@ -63,6 +63,7 @@ import com.jd.open.api.sdk.response.supplier.VcGetdetailbyorderidResponse;
|
|
|
import com.jd.open.api.sdk.response.supplier.VcGetpurchaseorderlistResponse;
|
|
|
import com.jd.open.api.sdk.response.supplier.VcGetwaredeliverdistinctlistResponse;
|
|
|
import com.jd.open.api.sdk.response.supplier.VcReturnOrderListPageGetResponse;
|
|
|
+import com.ruoyi.common.core.domain.BaseIdPo;
|
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.io.IOUtils;
|
|
@@ -74,7 +75,6 @@ import org.apache.http.client.methods.HttpGet;
|
|
|
import org.apache.http.client.methods.HttpRequestBase;
|
|
|
import org.apache.http.impl.client.HttpClients;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@@ -85,8 +85,10 @@ import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
+import java.util.HashSet;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -101,12 +103,14 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
put("BackExplanationType", "图书回告不满足原因");
|
|
|
put("OrderState", "订单状态");
|
|
|
}};
|
|
|
+
|
|
|
//订单状态:审核不通过/供应商驳回/已完成
|
|
|
private static final ArrayList<String> notIn = new ArrayList<String>() {{
|
|
|
add("7");
|
|
|
add("20");
|
|
|
add("3");
|
|
|
}};
|
|
|
+
|
|
|
private static final Map<String, String> returnStatesMap = new HashMap<String, String>() {{
|
|
|
put("1", "初始退货单");
|
|
|
put("2", "等待经理审核");
|
|
@@ -123,6 +127,7 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
put("21", "等待删除确认");
|
|
|
put("22", "已删除");
|
|
|
}};
|
|
|
+
|
|
|
@Autowired
|
|
|
private JdOrderService jdOrderService;
|
|
|
@Autowired
|
|
@@ -134,28 +139,46 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
@Resource
|
|
|
private JdInfoService jdInfoService;
|
|
|
@Resource
|
|
|
- private JdClientFactory jdClientFactory;
|
|
|
- @Resource
|
|
|
private ProductInfoService productInfoService;
|
|
|
@Resource
|
|
|
private DictTenantTypeService dictTenantTypeService;
|
|
|
@Resource
|
|
|
private DictTenantDataService dictTenantDataService;
|
|
|
+ @Resource
|
|
|
+ private JdClient jdClient;
|
|
|
|
|
|
- /**
|
|
|
- * 请求API工具方法
|
|
|
- */
|
|
|
- private static JSONObject getJSON(HttpRequestBase httpRequestBase) throws IOException {
|
|
|
- HttpClient client = HttpClients.createDefault();
|
|
|
- httpRequestBase.setConfig(RequestConfig.custom().setConnectTimeout(3000).build());
|
|
|
- HttpResponse response = client.execute(httpRequestBase);
|
|
|
- int statusCode = response.getStatusLine().getStatusCode();
|
|
|
- HttpEntity entity = response.getEntity();
|
|
|
- String responseStr = IOUtils.toString(entity.getContent(), StandardCharsets.UTF_8);
|
|
|
- if (statusCode != 200) {
|
|
|
- log.error("请求失败 {} {} {}", statusCode, httpRequestBase.getURI(), responseStr);
|
|
|
+ //每小时执行一次
|
|
|
+ @Scheduled(cron = "0 0 0/1 * * ?")
|
|
|
+ public void refreshToken() {
|
|
|
+ JdInfoVo jdInfoVo = jdInfoService.getOne();
|
|
|
+ //如果过期时间减去当前时间小于90分钟,则要刷新token
|
|
|
+ if (ObjectUtil.isNotNull(jdInfoVo.getExpireTime())) {
|
|
|
+ long between = DateUtil.between(DateUtil.date(), jdInfoVo.getExpireTime(), DateUnit.MINUTE, false);
|
|
|
+ if (between <= 0) {
|
|
|
+ if (jdInfoVo.getOnline() > 0) {
|
|
|
+ jdInfoVo.setOnline(0);
|
|
|
+ jdInfoService.updateById(jdInfoVo);
|
|
|
+ }
|
|
|
+ } else if (90 >= between) {
|
|
|
+ refreshToken(jdInfoVo);
|
|
|
+ }
|
|
|
}
|
|
|
- return JSONObject.parseObject(responseStr);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public JdInfoVo validJdInfo() {
|
|
|
+ JdInfoVo jdInfoVo = jdInfoService.getOne();
|
|
|
+ boolean online = jdInfoVo.getOnline() > 0;
|
|
|
+ if (!online) {
|
|
|
+ log.info("京东已经下线");
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ //开始校验是否符合条件
|
|
|
+ if (ObjectUtil.isNull(jdInfoVo.getInitQueryDate())) {
|
|
|
+ log.error("请线配置京东初始化查询时间");
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ return jdInfoVo;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -185,11 +208,10 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
|
|
|
@Override
|
|
|
public void tellBackOrer(TellBackOrderVO tellBackOrderVO) {
|
|
|
- JdClient client = jdClientFactory.getJdClient();
|
|
|
VcConfirmpurchaseorderResponse response;
|
|
|
try {
|
|
|
VcConfirmpurchaseorderRequest request = buildConfirmpurchaseorderRequest(tellBackOrderVO);
|
|
|
- response = client.execute(request);
|
|
|
+ response = jdClient.execute(request);
|
|
|
} catch (Exception e) {
|
|
|
throw new RuntimeException(e);
|
|
|
}
|
|
@@ -227,26 +249,6 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
return request;
|
|
|
}
|
|
|
|
|
|
- //每小时执行一次
|
|
|
- @Scheduled(cron = "0 0 0/1 * * ? ")
|
|
|
- //每分钟执行一次
|
|
|
-// @Scheduled(cron = "0 0/1 * * * ? ")
|
|
|
- void refreshToken() {
|
|
|
- JdInfoVo jdInfoVo = jdInfoService.getOne();
|
|
|
- //如果过期时间减去当前时间小于90分钟,则要刷新token
|
|
|
- if (ObjectUtil.isNotNull(jdInfoVo.getExpireTime())) {
|
|
|
- long between = DateUtil.between(DateUtil.date(), jdInfoVo.getExpireTime(), DateUnit.MINUTE, false);
|
|
|
- if (between <= 0) {
|
|
|
- if (jdInfoVo.getOnline() > 0) {
|
|
|
- jdInfoVo.setOnline(0);
|
|
|
- jdInfoService.updateById(jdInfoVo);
|
|
|
- }
|
|
|
- } else if (90 >= between) {
|
|
|
- refreshToken(jdInfoVo);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 刷新Token
|
|
|
*/
|
|
@@ -275,73 +277,53 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
* @author hj
|
|
|
* @date 2023/12/13 22:30
|
|
|
*/
|
|
|
- @Async
|
|
|
- public void startJdOrder() {
|
|
|
- ThreadUtil.safeSleep(RunParamConstant.SLEEP_ONE_MINUTE);
|
|
|
- JdClient jdClient = jdClientFactory.getJdClient();
|
|
|
- while (true) {
|
|
|
- JdInfoVo jdInfoVo = validJdInfo();
|
|
|
- if (ObjectUtil.isNull(jdInfoVo)) {
|
|
|
- ThreadUtil.safeSleep(RunParamConstant.SLEEP_ONE_MINUTE);
|
|
|
- continue;
|
|
|
- }
|
|
|
- getJdOrderList(jdClient, jdInfoVo);
|
|
|
- log.info("京东订单采集完成");
|
|
|
- ThreadUtil.safeSleep(RunParamConstant.SLEEP_ONE_MINUTE);
|
|
|
+ @DSTransactional
|
|
|
+ @Override
|
|
|
+ public void startJdOrder(JdInfoVo jdInfoVo) {
|
|
|
+ if (ObjectUtil.isNull(jdInfoVo)) {
|
|
|
+ return;
|
|
|
}
|
|
|
+
|
|
|
+ saveJdOrder(jdInfoVo);
|
|
|
+ log.info("京东订单采集完成");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 开始京东退货单采集
|
|
|
- *
|
|
|
- * @author hj
|
|
|
- * @date 2023/12/13 22:30
|
|
|
*/
|
|
|
- @Async
|
|
|
- public void startJdBackOrder() {
|
|
|
- ThreadUtil.safeSleep(RunParamConstant.SLEEP_ONE_MINUTE);
|
|
|
- JdClient jdClient = jdClientFactory.getJdClient();
|
|
|
- while (true) {
|
|
|
- JdInfoVo jdInfoVo = validJdInfo();
|
|
|
- if (ObjectUtil.isNull(jdInfoVo)) {
|
|
|
- ThreadUtil.safeSleep(RunParamConstant.SLEEP_ONE_MINUTE);
|
|
|
- continue;
|
|
|
- }
|
|
|
- getJdBackOrder(jdClient, jdInfoVo);
|
|
|
- log.info("京东退货单采集完成");
|
|
|
- ThreadUtil.safeSleep(RunParamConstant.SLEEP_ONE_MINUTE);
|
|
|
+ @DSTransactional
|
|
|
+ @Override
|
|
|
+ public void startJdBackOrder(JdInfoVo jdInfoVo) {
|
|
|
+ if (ObjectUtil.isNull(jdInfoVo)) {
|
|
|
+ return;
|
|
|
}
|
|
|
+
|
|
|
+ getJdBackOrder(jdInfoVo);
|
|
|
+ log.info("京东退货单采集完成");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 刷新京东状态
|
|
|
- *
|
|
|
- * @param
|
|
|
*/
|
|
|
- @Async
|
|
|
- public void refreshJdState() {
|
|
|
- ThreadUtil.safeSleep(RunParamConstant.SLEEP_ONE_MINUTE);
|
|
|
- JdClient jdClient = jdClientFactory.getJdClient();
|
|
|
- while (true) {
|
|
|
- JdInfoVo jdInfoVo = validJdInfo();
|
|
|
- if (ObjectUtil.isNull(jdInfoVo)) {
|
|
|
- ThreadUtil.safeSleep(RunParamConstant.SLEEP_FIVE_MINUTE);
|
|
|
- continue;
|
|
|
- }
|
|
|
- handleRefreshDate(jdClient);
|
|
|
- log.info("刷新京东状态完成");
|
|
|
- ThreadUtil.safeSleep(RunParamConstant.SLEEP_FIVE_MINUTE);
|
|
|
+ @DSTransactional
|
|
|
+ @Override
|
|
|
+ public void refreshJdState(JdInfoVo jdInfoVo) {
|
|
|
+ if (ObjectUtil.isNull(jdInfoVo)) {
|
|
|
+ return;
|
|
|
}
|
|
|
+
|
|
|
+ handleRefreshDate();
|
|
|
+ log.info("刷新京东状态完成");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 初始化租户字典表
|
|
|
*/
|
|
|
- @Async
|
|
|
+ @DSTransactional
|
|
|
+ @Override
|
|
|
public void initTenantDict() {
|
|
|
- JdClient jdClient = jdClientFactory.getJdClient();
|
|
|
- handleDeliveryCenter(jdClient);
|
|
|
- handleComponent(jdClient);
|
|
|
+ handleDeliveryCenter();
|
|
|
+ handleComponent();
|
|
|
handleReturnStates();
|
|
|
System.out.println("字典初始化完成");
|
|
|
}
|
|
@@ -349,8 +331,8 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
/**
|
|
|
* 补偿商品id为空
|
|
|
*/
|
|
|
+ @DSTransactional
|
|
|
@Override
|
|
|
- @Async
|
|
|
public void compensatingProductNon() {
|
|
|
SecurityUtils.setTenantId(RunParamConstant.tenantId);
|
|
|
DynamicDataSourceContextHolder.push(SourceConstant.ITEM);
|
|
@@ -371,13 +353,25 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 请求API工具方法
|
|
|
+ */
|
|
|
+ private static JSONObject getJSON(HttpRequestBase httpRequestBase) throws IOException {
|
|
|
+ HttpClient client = HttpClients.createDefault();
|
|
|
+ httpRequestBase.setConfig(RequestConfig.custom().setConnectTimeout(3000).build());
|
|
|
+ HttpResponse response = client.execute(httpRequestBase);
|
|
|
+ int statusCode = response.getStatusLine().getStatusCode();
|
|
|
+ HttpEntity entity = response.getEntity();
|
|
|
+ String responseStr = IOUtils.toString(entity.getContent(), StandardCharsets.UTF_8);
|
|
|
+ if (statusCode != 200) {
|
|
|
+ log.error("请求失败 {} {} {}", statusCode, httpRequestBase.getURI(), responseStr);
|
|
|
+ }
|
|
|
+ return JSONObject.parseObject(responseStr);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 处理刷新token数据
|
|
|
- *
|
|
|
- * @param jdClient
|
|
|
- * @author hj
|
|
|
- * @date 2023/12/21 9:01
|
|
|
*/
|
|
|
- public void handleRefreshDate(JdClient jdClient) {
|
|
|
+ private void handleRefreshDate() {
|
|
|
DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
|
|
|
SecurityUtils.setTenantId(RunParamConstant.tenantId);
|
|
|
try {
|
|
@@ -401,7 +395,7 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
List<JdOrder> records = pages.get(pageIndex - 1);
|
|
|
|
|
|
List<Long> orderIds = records.stream().map(JdOrder::getOrderId).collect(Collectors.toList());
|
|
|
- JOSOrderResultDto josOrderResultDto = getJdOrderInfo(1, pageSize + 20, records.get(0).getCreatedDate(), DateUtil.offsetDay(records.get(0).getCreatedDate(), 90), jdClient, orderIds);
|
|
|
+ JOSOrderResultDto josOrderResultDto = getJdOrderInfo(1, pageSize + 20, records.get(0).getCreatedDate(), DateUtil.offsetDay(records.get(0).getCreatedDate(), 90), orderIds);
|
|
|
List<PurchaseOrderDto> purchaseOrderList = josOrderResultDto.getPurchaseOrderList();
|
|
|
List<JdOrder> jdOrderList = BeanUtil.copyToList(purchaseOrderList, JdOrder.class);
|
|
|
Map<Long, JdOrder> collect = records.stream().collect(Collectors.toMap(JdOrder::getOrderId, o -> o));
|
|
@@ -412,7 +406,7 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
if (JdParamConstant.JD_ORDER_STATE_FINISH.equals(jdOrder.getState())) {
|
|
|
List<JdOrderDetails> jdOrderDetailsList = new ArrayList<>();
|
|
|
//重新插入明细
|
|
|
- boolean hasExFlag = dealOrderDetail(jdClient, jdOrder, jdOrderDetailsList);
|
|
|
+ boolean hasExFlag = dealOrderDetail(jdOrder, jdOrderDetailsList);
|
|
|
DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
|
|
|
//获取当前明细记录
|
|
|
List<JdOrderDetails> dbJdOrderDetails = jdOrderDetailsService.lambdaQuery().eq(JdOrderDetails::getJdOrderId, id).list();
|
|
@@ -451,12 +445,12 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
} catch (Exception e) {
|
|
|
log.error("刷新京东状态失败", e);
|
|
|
} finally {
|
|
|
- DynamicDataSourceContextHolder.poll();
|
|
|
+ DynamicDataSourceContextHolder.clear();
|
|
|
SecurityUtils.clearTenantId();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private boolean dealOrderDetail(JdClient jdClient, JdOrder jdOrder, List<JdOrderDetails> jdOrderDetailsList) throws Exception {
|
|
|
+ private boolean dealOrderDetail(JdOrder jdOrder, List<JdOrderDetails> jdOrderDetailsList) throws Exception {
|
|
|
VcGetdetailbyorderidRequest request = new VcGetdetailbyorderidRequest();
|
|
|
request.setOrderId(jdOrder.getOrderId());
|
|
|
request.setIsPage(false);
|
|
@@ -464,7 +458,9 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
JOSDetailResultDto josDetailResultDto = response.getJosDetailResultDto();
|
|
|
List<PurchaseAllocationDetailDto> purchaseAllocationDetailList = ObjectUtil.isNull(josDetailResultDto) ? new ArrayList<>()
|
|
|
: josDetailResultDto.getPurchaseAllocationDetailList();
|
|
|
+
|
|
|
List<JdOrderDetails> jdOrderDetails = BeanUtil.copyToList(purchaseAllocationDetailList, JdOrderDetails.class);
|
|
|
+
|
|
|
DynamicDataSourceContextHolder.push(SourceConstant.ITEM);
|
|
|
AtomicBoolean hasExFlag = new AtomicBoolean(false);
|
|
|
jdOrderDetails.forEach(item -> {
|
|
@@ -510,12 +506,8 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
|
|
|
/**
|
|
|
* 处理回告状态、订单属性、删除状态、图书回告不满足原因、订单状态
|
|
|
- *
|
|
|
- * @param jdClient
|
|
|
- * @author hj
|
|
|
- * @date 2023/12/13 21:56
|
|
|
*/
|
|
|
- private void handleComponent(JdClient jdClient) {
|
|
|
+ private void handleComponent() {
|
|
|
componentDictTypeMap.forEach((k, v) -> {
|
|
|
VcGetcomponentlistRequest request = new VcGetcomponentlistRequest();
|
|
|
DynamicDataSourceContextHolder.push(SourceConstant.BASE);
|
|
@@ -546,12 +538,8 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
|
|
|
/**
|
|
|
* 处理配送中心字典转换
|
|
|
- *
|
|
|
- * @param jdClient
|
|
|
- * @author hj
|
|
|
- * @date 2023/12/13 21:55
|
|
|
*/
|
|
|
- public void handleDeliveryCenter(JdClient jdClient) {
|
|
|
+ private void handleDeliveryCenter() {
|
|
|
//获取京东仓库,并存入字典表
|
|
|
VcGetwaredeliverdistinctlistRequest request = new VcGetwaredeliverdistinctlistRequest();
|
|
|
DynamicDataSourceContextHolder.push(SourceConstant.BASE);
|
|
@@ -576,9 +564,6 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
|
|
|
/**
|
|
|
* 处理jd退货状态字典
|
|
|
- *
|
|
|
- * @author hj
|
|
|
- * @date 2023/12/20 22:27
|
|
|
*/
|
|
|
private void handleReturnStates() {
|
|
|
DynamicDataSourceContextHolder.push(SourceConstant.BASE);
|
|
@@ -599,11 +584,7 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
|
|
|
/**
|
|
|
* 处理字典表
|
|
|
- *
|
|
|
- * @author hj
|
|
|
- * @date 2023/12/21 9:01
|
|
|
*/
|
|
|
-
|
|
|
private void handleDictData(List<CommonDictData> commonDictDataList, DictTenantType dictTenantType) {
|
|
|
//查出原来的字典
|
|
|
List<DictTenantData> list = dictTenantDataService.lambdaQuery().eq(DictTenantData::getDictCode, dictTenantType.getCode()).orderByAsc(DictTenantData::getSort).list();
|
|
@@ -634,11 +615,6 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
|
|
|
/**
|
|
|
* 处理字典类型表
|
|
|
- *
|
|
|
- * @param code
|
|
|
- * @param name
|
|
|
- * @author hj
|
|
|
- * @date 2023/12/13 22:03
|
|
|
*/
|
|
|
private DictTenantType handleDictType(String code, String name) {
|
|
|
DictTenantType dictTenantType = new DictTenantType();
|
|
@@ -661,248 +637,145 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
/**
|
|
|
* 获取京东订单
|
|
|
*/
|
|
|
- private void getJdOrderList(JdClient client, JdInfoVo jdInfoVo) {
|
|
|
+ private void saveJdOrder(JdInfoVo jdInfoVo) {
|
|
|
DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
|
|
|
SecurityUtils.setTenantId(RunParamConstant.tenantId);
|
|
|
+
|
|
|
+ //获取开始同步的时间
|
|
|
+ Date startTime = jdInfoVo.getInitQueryDate();
|
|
|
+ Date endTime = new Date();
|
|
|
+
|
|
|
+ //根据下单时间获取数据库里最后一个订单
|
|
|
+ JdOrder lastJdOrder = jdOrderService.getOne(q -> q.orderByDesc(JdOrder::getCreatedDate));
|
|
|
+ if (ObjectUtil.isNotNull(lastJdOrder)) {
|
|
|
+ startTime = lastJdOrder.getCreatedDate();
|
|
|
+ }
|
|
|
+
|
|
|
try {
|
|
|
- int pageIndex = 1;
|
|
|
- int totalPage = 1;
|
|
|
- int pageSize = 50;
|
|
|
- do {
|
|
|
+ List<PurchaseOrderDto> purchaseOrderDtoList = getJdOrderInfo(startTime, endTime, null);
|
|
|
|
|
|
- //获取开始同步的时间
|
|
|
- Date startTime = jdInfoVo.getInitQueryDate();
|
|
|
- Date endTime = new Date();
|
|
|
- //根据下单时间获取数据库里最后一个订单
|
|
|
- JdOrder lastJdOrder = jdOrderService.lambdaQuery().isNotNull(JdOrder::getCreatedDate).orderByDesc(JdOrder::getCreatedDate).last("limit 1").oneOpt().orElse(null);
|
|
|
- if (ObjectUtil.isNotNull(lastJdOrder)) {
|
|
|
- //将最后一个下单时间减1个小时设置为开始时间
|
|
|
- startTime = DateUtil.offsetHour(lastJdOrder.getCreatedDate(), -1);
|
|
|
- }
|
|
|
- //计算总页数
|
|
|
- JOSOrderResultDto josOrderResultDto = getJdOrderInfo(pageIndex, pageSize, startTime, endTime, client, null);
|
|
|
- totalPage = (josOrderResultDto.getRecordCount() / pageSize) + (josOrderResultDto.getRecordCount() % pageSize > 0 ? 1 : 0);
|
|
|
+ if (CollectionUtil.isEmpty(purchaseOrderDtoList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
- //数据返回订单是倒序反过来按正顺保存
|
|
|
- List<PurchaseOrderDto> purchaseOrderList = josOrderResultDto.getPurchaseOrderList();
|
|
|
- //京东回来的数据是按时间倒序的,使用reverse方法将list中的数据翻转为正序
|
|
|
- Collections.reverse(purchaseOrderList);
|
|
|
-
|
|
|
- //处理数据(过滤已存在的数据)
|
|
|
- List<Long> jdOrderIds = purchaseOrderList.stream().map(PurchaseOrderDto::getOrderId).collect(Collectors.toList());
|
|
|
- if (CollectionUtil.isNotEmpty(jdOrderIds)) {
|
|
|
- //获取已同步的京东订单id
|
|
|
- List<Long> existOrderIds = jdOrderService.lambdaQuery().select(JdOrder::getOrderId).in(JdOrder::getOrderId, jdOrderIds).list().stream().map(JdOrder::getOrderId).collect(Collectors.toList());
|
|
|
- //过滤出未同步的数据
|
|
|
- List<PurchaseOrderDto> purchaseOrderListFilter = purchaseOrderList.stream().filter(item -> !existOrderIds.contains(item.getOrderId())).collect(Collectors.toList());
|
|
|
- //转为系统自己的实体类
|
|
|
- List<JdOrder> jdOrderList = BeanUtil.copyToList(purchaseOrderListFilter, JdOrder.class);
|
|
|
- //赋值租户id
|
|
|
- jdOrderList.forEach(item -> item.setTenantId(RunParamConstant.tenantId));
|
|
|
-
|
|
|
- //TransactionUtil.execute(() -> {
|
|
|
-
|
|
|
- //将数据存储到库
|
|
|
- jdOrderService.saveBatch(jdOrderList);
|
|
|
-
|
|
|
- //获取明细
|
|
|
- List<JdOrderDetails> jdOrderDetailsList = new ArrayList<>();
|
|
|
-
|
|
|
- for (JdOrder jdOrder : jdOrderList) {
|
|
|
- boolean hasExFlag;
|
|
|
- try {
|
|
|
- hasExFlag = dealOrderDetail(client, jdOrder, jdOrderDetailsList);
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("获取京东订单明细出错:" + e.getMessage(), e);
|
|
|
- throw new RuntimeException(e);
|
|
|
- }
|
|
|
+ // 订单id集合
|
|
|
+ Set<Long> orderIdSet = purchaseOrderDtoList.stream().map(PurchaseOrderDto::getOrderId).collect(Collectors.toSet());
|
|
|
|
|
|
- if (hasExFlag) {
|
|
|
- jdOrder.setHasEx(RunParamConstant.EXCEPTION);
|
|
|
- jdOrder.setHandleStatus(RunParamConstant.EXCEPTION_STATE_UNTREATED);
|
|
|
- jdOrderService.updateById(jdOrder);
|
|
|
- }
|
|
|
- }
|
|
|
+ // 获取已同步的京东订单id
|
|
|
+ Set<Long> existOrderIdSet = jdOrderService.list(q -> q.select(JdOrder::getOrderId).in(JdOrder::getOrderId, orderIdSet))
|
|
|
+ .stream().map(JdOrder::getOrderId).collect(Collectors.toSet());
|
|
|
+
|
|
|
+ // 过滤已同步的订单
|
|
|
+ purchaseOrderDtoList = purchaseOrderDtoList.stream()
|
|
|
+ .filter(item -> !existOrderIdSet.contains(item.getOrderId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ //转为系统自己的实体类
|
|
|
+ List<JdOrder> jdOrderList = BeanUtil.copyToList(purchaseOrderDtoList, JdOrder.class);
|
|
|
+
|
|
|
+ //获取明细
|
|
|
+ List<JdOrderDetails> jdOrderDetailsList = new ArrayList<>();
|
|
|
+
|
|
|
+ for (JdOrder jdOrder : jdOrderList) {
|
|
|
+ jdOrder.setId(IdWorker.getId());
|
|
|
+ jdOrder.setTenantId(RunParamConstant.tenantId);
|
|
|
|
|
|
- DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
|
|
|
- jdOrderDetailsService.saveOrUpdateBatch(jdOrderDetailsList);
|
|
|
- //});
|
|
|
+ boolean hasExFlag = dealOrderDetail(jdOrder, jdOrderDetailsList);
|
|
|
|
|
|
+ if (hasExFlag) {
|
|
|
+ jdOrder.setHasEx(RunParamConstant.EXCEPTION);
|
|
|
+ jdOrder.setHandleStatus(RunParamConstant.EXCEPTION_STATE_UNTREATED);
|
|
|
}
|
|
|
- pageIndex++;
|
|
|
- } while (pageIndex <= totalPage);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //将数据存储到库
|
|
|
+ jdOrderService.saveBatch(jdOrderList);
|
|
|
+
|
|
|
+ DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
|
|
|
+ jdOrderDetailsService.saveOrUpdateBatch(jdOrderDetailsList);
|
|
|
+
|
|
|
} catch (Exception e) {
|
|
|
- log.error("获取京东订单出错:" + e.getMessage(), e);
|
|
|
+ log.error("获取京东订单出错:{}", e.getMessage(), e);
|
|
|
} finally {
|
|
|
SecurityUtils.clearTenantId();
|
|
|
DynamicDataSourceContextHolder.clear();
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取京东退货订单
|
|
|
*/
|
|
|
- private void getJdBackOrder(JdClient client, JdInfoVo jdInfoVo) {
|
|
|
+ private void getJdBackOrder(JdInfoVo jdInfoVo) {
|
|
|
DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
|
|
|
SecurityUtils.setTenantId(RunParamConstant.tenantId);
|
|
|
try {
|
|
|
- int pageIndex = 1;
|
|
|
- int totalPage = 1;
|
|
|
- int pageSize = 50;
|
|
|
- do {
|
|
|
- Date startTime = jdInfoVo.getInitQueryDate();
|
|
|
- Date endTime = new Date();
|
|
|
- //根据下单时间获取数据库里最后一个订单
|
|
|
- JdBack lastJdBack = jdBackService.lambdaQuery().isNotNull(JdBack::getCreateDate).orderByDesc(JdBack::getCreateDate).last("limit 1").oneOpt().orElse(null);
|
|
|
- if (ObjectUtil.isNotNull(lastJdBack)) {
|
|
|
- //将最后一个下单时间减1个小时设置为开始时间
|
|
|
- startTime = DateUtil.offsetHour(lastJdBack.getCreateDate(), -1);
|
|
|
- }
|
|
|
- //计算总页数
|
|
|
- RoResultDto jdBackOrderInfo = getJdBackInfo(pageIndex, pageSize, startTime, endTime, client);
|
|
|
- totalPage = (jdBackOrderInfo.getRecordCount() / pageSize) + (jdBackOrderInfo.getRecordCount() % pageSize > 0 ? 1 : 0);
|
|
|
-
|
|
|
- //京东回来的数据是按时间倒序的,使用reverse方法将list中的数据翻转为正序
|
|
|
- List<RoDto> roDtoList = jdBackOrderInfo.getRoDtoList();
|
|
|
- Collections.reverse(roDtoList);
|
|
|
-
|
|
|
- //过滤出不在数据库里的新数据
|
|
|
- List<Long> returnIds = roDtoList.stream().map(RoDto::getReturnId).collect(Collectors.toList());
|
|
|
- if (CollectionUtil.isNotEmpty(returnIds)) {
|
|
|
- List<Long> existReturnIds = jdBackService.lambdaQuery().select(JdBack::getReturnId).in(JdBack::getReturnId, returnIds).list().stream().map(JdBack::getReturnId).collect(Collectors.toList());
|
|
|
- roDtoList = roDtoList.stream().filter(item -> !existReturnIds.contains(item.getReturnId())).collect(Collectors.toList());
|
|
|
- //转成我们自己的实体类
|
|
|
- List<JdBack> jdBackList = BeanUtil.copyToList(roDtoList, JdBack.class);
|
|
|
- //赋值租户id
|
|
|
- //jdBackList.forEach(item -> item.setTenantId(tenantId));
|
|
|
- jdBackService.saveBatch(jdBackList);
|
|
|
- //获取明细
|
|
|
- List<JdBackDetails> JdBackDetailsList = new ArrayList<>();
|
|
|
- for (JdBack jdBack : jdBackList) {
|
|
|
- VcGetReturnOrderDetailRequest request = new VcGetReturnOrderDetailRequest();
|
|
|
- request.setReturnId(jdBack.getReturnId());
|
|
|
- VcGetReturnOrderDetailResponse response = client.execute(request);
|
|
|
- DetailResultDto detailResultDto = response.getDetailResultDto();
|
|
|
- List<JdBackDetails> jdBackDetails = BeanUtil.copyToList(detailResultDto.getDetailDtoList(), JdBackDetails.class);
|
|
|
- DynamicDataSourceContextHolder.push(SourceConstant.ITEM);
|
|
|
- jdBackDetails.forEach(item -> {
|
|
|
- item.setJdBackId(jdBack.getId());
|
|
|
- //产品编码
|
|
|
- Long wareId = item.getWareId();
|
|
|
- List<ProductInfo> list = productInfoService.lambdaQuery().eq(ProductInfo::getCustomCode, wareId).list();
|
|
|
- if (CollectionUtil.isEmpty(list)) {
|
|
|
- //TODO 没有产品触发异常;
|
|
|
- } else {
|
|
|
- item.setProductId(list.get(0).getId());
|
|
|
- }
|
|
|
- });
|
|
|
- JdBackDetailsList.addAll(jdBackDetails);
|
|
|
- }
|
|
|
- DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
|
|
|
- jdBackDetailsService.saveBatch(JdBackDetailsList);
|
|
|
- }
|
|
|
- pageIndex++;
|
|
|
- } while (pageIndex <= totalPage);
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("获取京东退货订单出错:" + e.getMessage(), e);
|
|
|
- } finally {
|
|
|
- SecurityUtils.clearTenantId();
|
|
|
- DynamicDataSourceContextHolder.clear();
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 获取京东退货订单
|
|
|
- */
|
|
|
- /*private void getJdSalesReturns(JdClient client, JdInfoVo jdInfoVo) throws Exception {
|
|
|
- int pageIndex = 1;
|
|
|
- int totalPage = 1;
|
|
|
- int pageSize = 50;
|
|
|
- do {
|
|
|
Date startTime = jdInfoVo.getInitQueryDate();
|
|
|
Date endTime = new Date();
|
|
|
//根据下单时间获取数据库里最后一个订单
|
|
|
- JdSalesReturns jdSalesReturns = jdSalesReturnsService.getOne(q -> q.isNotNull(JdSalesReturns::getCreateTime).orderByDesc(JdSalesReturns::getCreateTime));
|
|
|
- if (ObjectUtil.isNotEmpty(jdSalesReturns)) {
|
|
|
- //将最后一个下单时间减1个小时设置为开始时间
|
|
|
- startTime = DateUtil.offsetHour(jdSalesReturns.getCreateTime(), -1);
|
|
|
+ JdBack lastJdBack = jdBackService.getOne(q -> q.orderByDesc(JdBack::getCreateDate));
|
|
|
+ if (ObjectUtil.isNotNull(lastJdBack)) {
|
|
|
+ //将最后一个下单时间设置为开始时间
|
|
|
+ startTime = lastJdBack.getCreateDate();
|
|
|
+ }
|
|
|
+
|
|
|
+ List<RoDto> roDtoList = getJdBackInfo(startTime, endTime);
|
|
|
+ if (CollectionUtil.isEmpty(roDtoList)) {
|
|
|
+ return;
|
|
|
}
|
|
|
- //计算总页数
|
|
|
- RoResultDto jdSalesReturnsInfo = getJdSalesReturnsInfo(pageIndex, pageSize, startTime, endTime, client);
|
|
|
- totalPage = (jdSalesReturnsInfo.getRecordCount()/pageSize)+(jdSalesReturnsInfo.getRecordCount()%pageSize>0?1:0);
|
|
|
- Integer recordCount = jdSalesReturnsInfo.getRecordCount();
|
|
|
- List<RoDto> roDtoList = jdSalesReturnsInfo.getRoDtoList();
|
|
|
- //京东回来的数据是按时间倒序的,使用reverse方法将list中的数据翻转为正序
|
|
|
- Collections.reverse(roDtoList);
|
|
|
|
|
|
//过滤出不在数据库里的新数据
|
|
|
List<Long> returnIds = roDtoList.stream().map(RoDto::getReturnId).collect(Collectors.toList());
|
|
|
- List<Long> existReturnIds = jdSalesReturnsService.listObject(JdSalesReturns::getRefundId, q -> q.in(JdSalesReturns::getRefundId, returnIds));
|
|
|
+ List<Long> existReturnIds = jdBackService.list(q -> q.select(JdBack::getReturnId).in(JdBack::getReturnId, returnIds))
|
|
|
+ .stream().map(JdBack::getReturnId).collect(Collectors.toList());
|
|
|
roDtoList = roDtoList.stream().filter(item -> !existReturnIds.contains(item.getReturnId())).collect(Collectors.toList());
|
|
|
+
|
|
|
//转成我们自己的实体类
|
|
|
List<JdBack> jdBackList = BeanUtil.copyToList(roDtoList, JdBack.class);
|
|
|
- jdBackService.saveBatch(jdBackList);
|
|
|
-// //获取明细
|
|
|
+
|
|
|
+ //获取明细
|
|
|
List<JdBackDetails> JdBackDetailsList = new ArrayList<>();
|
|
|
+
|
|
|
+ Set<Long> wareIdSet = new HashSet<>();
|
|
|
+
|
|
|
for (JdBack jdBack : jdBackList) {
|
|
|
+ jdBack.setId(IdWorker.getId());
|
|
|
+
|
|
|
VcGetReturnOrderDetailRequest request = new VcGetReturnOrderDetailRequest();
|
|
|
request.setReturnId(jdBack.getReturnId());
|
|
|
- VcGetReturnOrderDetailResponse response = client.execute(request);
|
|
|
+ VcGetReturnOrderDetailResponse response = jdClient.execute(request);
|
|
|
DetailResultDto detailResultDto = response.getDetailResultDto();
|
|
|
-
|
|
|
List<JdBackDetails> jdBackDetails = BeanUtil.copyToList(detailResultDto.getDetailDtoList(), JdBackDetails.class);
|
|
|
+
|
|
|
jdBackDetails.forEach(item -> {
|
|
|
item.setJdBackId(jdBack.getId());
|
|
|
- //产品编码
|
|
|
- Long wareId = item.getWareId();
|
|
|
- List<ProductInfo> list = productInfoService.lambdaQuery().eq(ProductInfo::getCustomCode, wareId).list();
|
|
|
- if(CollectionUtil.isEmpty(list)){
|
|
|
- //TODO 没有产品触发异常;
|
|
|
- }else {
|
|
|
- item.setProductId(list.get(0).getId());
|
|
|
- }
|
|
|
+ wareIdSet.add(item.getWareId());
|
|
|
});
|
|
|
JdBackDetailsList.addAll(jdBackDetails);
|
|
|
}
|
|
|
+
|
|
|
+ // 赋值产品编码
|
|
|
+ DynamicDataSourceContextHolder.push(SourceConstant.ITEM);
|
|
|
+ Map<String, Long> map = productInfoService.mapKV(ProductInfo::getCustomCode, BaseIdPo::getId,
|
|
|
+ q -> q.in(ProductInfo::getCustomCode, wareIdSet));
|
|
|
+ JdBackDetailsList.forEach(item -> item.setProductId(map.get(item.getWareId().toString())));
|
|
|
+
|
|
|
+ DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
|
|
|
+ jdBackService.saveBatch(jdBackList);
|
|
|
jdBackDetailsService.saveBatch(JdBackDetailsList);
|
|
|
- pageIndex++;
|
|
|
- } while (pageIndex <= totalPage);
|
|
|
|
|
|
- }*/
|
|
|
- public void startJdSalesReturns() {
|
|
|
- JdClient jdClient = jdClientFactory.getJdClient();
|
|
|
- while (true) {
|
|
|
- JdInfoVo jdInfoVo = jdInfoService.getOne();
|
|
|
- boolean online = jdInfoVo.getOnline() > 0 ? true : false;
|
|
|
- if (!online) {
|
|
|
- log.info("京东已经下线");
|
|
|
- ThreadUtil.safeSleep(RunParamConstant.SLEEP_TEN_SECOND);
|
|
|
- continue;
|
|
|
- }
|
|
|
- //开始校验是否符合条件
|
|
|
- if (ObjectUtil.isNull(jdInfoVo.getInitQueryDate())) {
|
|
|
- log.error("请线配置京东初始化查询时间");
|
|
|
- ThreadUtil.safeSleep(RunParamConstant.SLEEP_TEN_SECOND);
|
|
|
- continue;
|
|
|
- }
|
|
|
- try {
|
|
|
- getJdBackOrder(jdClient, jdInfoVo);
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("获取京东订单列表出错:" + e.getMessage(), e);
|
|
|
- }
|
|
|
- ThreadUtil.safeSleep(30000);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("获取京东退货订单出错:{}", e.getMessage(), e);
|
|
|
+ } finally {
|
|
|
+ SecurityUtils.clearTenantId();
|
|
|
+ DynamicDataSourceContextHolder.clear();
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 将jd返回的json对象转换成jdInfoVo
|
|
|
- *
|
|
|
- * @param responseJson
|
|
|
- * @param jdInfoVo
|
|
|
- * @author hj
|
|
|
- * @date 2023/12/10 22:03
|
|
|
*/
|
|
|
private void convertJdInfoVO(JSONObject responseJson, JdInfoVo jdInfoVo) {
|
|
|
jdInfoVo.setAccessToken(responseJson.getString(RunParamConstant.ACCESS_TOKEN));
|
|
@@ -919,10 +792,6 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
|
|
|
/**
|
|
|
* 处理jd返回对象
|
|
|
- *
|
|
|
- * @param responseJson
|
|
|
- * @author hj
|
|
|
- * @date 2023/12/10 22:07
|
|
|
*/
|
|
|
private void dealJdTokenResponse(JSONObject responseJson) {
|
|
|
if (ObjectUtil.isNotEmpty(responseJson.getString(RunParamConstant.ACCESS_TOKEN)) && ObjectUtil.isNotEmpty(responseJson.getString(RunParamConstant.REFRESH_TOKEN))) {
|
|
@@ -936,11 +805,10 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 获取京东订单信息分页
|
|
|
*/
|
|
|
- private JOSOrderResultDto getJdOrderInfo(Integer pageIndex, Integer pageSize, Date startTime, Date endTime, JdClient client, List<Long> orderIds) throws Exception {
|
|
|
+ private JOSOrderResultDto getJdOrderInfo(Integer pageIndex, Integer pageSize, Date startTime, Date endTime, List<Long> orderIds) throws Exception {
|
|
|
VcGetpurchaseorderlistRequest request = new VcGetpurchaseorderlistRequest();
|
|
|
request.setCreatedDateStart(startTime);
|
|
|
request.setCreatedDateEnd(endTime);
|
|
@@ -950,41 +818,66 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
String orderIdsStr = orderIds.stream().map(Object::toString).collect(Collectors.joining(","));
|
|
|
request.setOrderIds(orderIdsStr);
|
|
|
}
|
|
|
- VcGetpurchaseorderlistResponse response = client.execute(request);
|
|
|
+ VcGetpurchaseorderlistResponse response = jdClient.execute(request);
|
|
|
validSuccess(response, "获取京东订单信息分页");
|
|
|
return response.getJosOrderResultDto();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 获取京东订单信息分页
|
|
|
+ */
|
|
|
+ private List<PurchaseOrderDto> getJdOrderInfo(Date startTime, Date endTime, List<Long> orderIds) throws Exception {
|
|
|
+ int pageIndex = 1;
|
|
|
+ int pageSize = 50;
|
|
|
+ int recordCount;
|
|
|
+
|
|
|
+ List<PurchaseOrderDto> purchaseOrderDtoList = new ArrayList<>();
|
|
|
+ do {
|
|
|
+ JOSOrderResultDto jdOrderInfo = getJdOrderInfo(pageIndex, pageSize, startTime, endTime, orderIds);
|
|
|
+ pageIndex++;
|
|
|
+ purchaseOrderDtoList.addAll(jdOrderInfo.getPurchaseOrderList());
|
|
|
+ recordCount = jdOrderInfo.getRecordCount();
|
|
|
+ } while (recordCount > (pageIndex - 1) * pageSize);
|
|
|
+ Collections.reverse(purchaseOrderDtoList);
|
|
|
+
|
|
|
+ return purchaseOrderDtoList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 获取京东退货单信息分页
|
|
|
*/
|
|
|
- private RoResultDto getJdBackInfo(Integer pageIndex, Integer pageSize, Date startTime, Date endTime, JdClient client) throws Exception {
|
|
|
+ private RoResultDto getJdBackInfo(Integer pageIndex, Integer pageSize, Date startTime, Date endTime) throws Exception {
|
|
|
VcReturnOrderListPageGetRequest request = new VcReturnOrderListPageGetRequest();
|
|
|
request.setCreateDateBegin(startTime);
|
|
|
request.setCreateDateEnd(endTime);
|
|
|
- request.setPageSize(pageIndex);
|
|
|
- request.setPageIndex(pageSize);
|
|
|
- VcReturnOrderListPageGetResponse response = client.execute(request);
|
|
|
+ request.setPageSize(pageSize);
|
|
|
+ request.setPageIndex(pageIndex);
|
|
|
+ VcReturnOrderListPageGetResponse response = jdClient.execute(request);
|
|
|
validSuccess(response, "获取京东退货单信息分页");
|
|
|
return response.getRoResultDto();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 获取京东退货售后单信息分页
|
|
|
+ * 获取京东订单信息分页
|
|
|
*/
|
|
|
-/* private RoResultDto getJdSalesReturnsInfo(Integer pageIndex, Integer pageSize, Date startTime, Date endTime, JdClient client) throws Exception {
|
|
|
- EdiwsRoRefundInfoListRequest request=new EdiwsRoRefundInfoListRequest();
|
|
|
- request.setCreateDateBegin(startTime);
|
|
|
- request.setCreateDateEnd(endTime);
|
|
|
- request.setPageSize(pageIndex);
|
|
|
- request.setPageIndex(pageSize);
|
|
|
- VcReturnOrderListPageGetResponse response = client.execute(request);
|
|
|
- validSuccess(response, "获取京东退货单信息分页");
|
|
|
- return response.getRoResultDto();
|
|
|
- }*/
|
|
|
+ private List<RoDto> getJdBackInfo(Date startTime, Date endTime) throws Exception {
|
|
|
+ int pageIndex = 1;
|
|
|
+ int pageSize = 50;
|
|
|
+ int recordCount;
|
|
|
|
|
|
+ List<RoDto> roDtoList = new ArrayList<>();
|
|
|
+ do {
|
|
|
+ RoResultDto roResultDto = getJdBackInfo(pageIndex, pageSize, startTime, endTime);
|
|
|
+ roDtoList.addAll(roResultDto.getRoDtoList());
|
|
|
+ recordCount = roResultDto.getRecordCount();
|
|
|
+ pageIndex++;
|
|
|
+ } while (recordCount > (pageIndex - 1) * pageSize);
|
|
|
+ Collections.reverse(roDtoList);
|
|
|
+
|
|
|
+ return roDtoList;
|
|
|
+ }
|
|
|
|
|
|
- void validSuccess(AbstractResponse response, String method) {
|
|
|
+ private void validSuccess(AbstractResponse response, String method) {
|
|
|
String code = response.getCode();
|
|
|
if (!"0".equals(code)) {
|
|
|
log.error("获取{}失败:{}", method, response.getZhDesc());
|
|
@@ -992,20 +885,4 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- private JdInfoVo validJdInfo() {
|
|
|
- JdInfoVo jdInfoVo = jdInfoService.getOne();
|
|
|
- boolean online = jdInfoVo.getOnline() > 0 ? true : false;
|
|
|
- if (!online) {
|
|
|
- log.info("京东已经下线");
|
|
|
- return null;
|
|
|
- }
|
|
|
- //开始校验是否符合条件
|
|
|
- if (ObjectUtil.isNull(jdInfoVo.getInitQueryDate())) {
|
|
|
- log.error("请线配置京东初始化查询时间");
|
|
|
- return null;
|
|
|
- }
|
|
|
- return jdInfoVo;
|
|
|
- }
|
|
|
-
|
|
|
}
|