|
@@ -226,7 +226,7 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
* @author hj
|
|
|
* @date 2023/12/13 22:30
|
|
|
*/
|
|
|
- @PostConstruct
|
|
|
+// @PostConstruct
|
|
|
public void startJdOrder(){
|
|
|
JdClient jdClient = jdClientFactory.getJdClient();
|
|
|
while (true){
|
|
@@ -244,6 +244,7 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
continue;
|
|
|
}
|
|
|
getJdOrderList(jdClient, jdInfoVo);
|
|
|
+ log.info("京东订单采集完成");
|
|
|
ThreadUtil.safeSleep(10000);
|
|
|
}
|
|
|
}
|
|
@@ -255,6 +256,7 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
* @author hj
|
|
|
* @date 2023/12/13 22:30
|
|
|
*/
|
|
|
+// @PostConstruct
|
|
|
public void startJdBackOrder(){
|
|
|
JdClient jdClient = jdClientFactory.getJdClient();
|
|
|
while (true){
|
|
@@ -271,11 +273,8 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
ThreadUtil.safeSleep(10000);
|
|
|
continue;
|
|
|
}
|
|
|
- try {
|
|
|
- getJdBackOrder(jdClient, jdInfoVo);
|
|
|
- }catch (Exception e){
|
|
|
- log.error("获取京东订单列表出错:" + e.getMessage(), e);
|
|
|
- }
|
|
|
+ getJdBackOrder(jdClient, jdInfoVo);
|
|
|
+ log.info("京东退货单采集完成");
|
|
|
ThreadUtil.safeSleep(10000);
|
|
|
}
|
|
|
}
|
|
@@ -292,10 +291,12 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
/**
|
|
|
* 初始化租户字典表
|
|
|
*/
|
|
|
+// @PostConstruct
|
|
|
public void initTenantDict(){
|
|
|
JdClient jdClient = jdClientFactory.getJdClient();
|
|
|
handleDeliveryCenter(jdClient);
|
|
|
handleComponent(jdClient);
|
|
|
+ System.out.println("字典初始化完成");
|
|
|
}
|
|
|
|
|
|
//订单状态:审核不通过/供应商驳回/已完成
|
|
@@ -309,6 +310,7 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
* 刷新京东状态
|
|
|
* @param
|
|
|
*/
|
|
|
+ @PostConstruct
|
|
|
public void refreshJdState(){
|
|
|
JdClient jdClient = jdClientFactory.getJdClient();
|
|
|
while (true){
|
|
@@ -325,35 +327,48 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
ThreadUtil.safeSleep(10000);
|
|
|
continue;
|
|
|
}
|
|
|
- try {
|
|
|
- handleRefreshDate(jdClient);
|
|
|
- }catch (Exception e){
|
|
|
- log.error("获取京东订单列表出错:" + e.getMessage(), e);
|
|
|
- }
|
|
|
+ handleRefreshDate(jdClient);
|
|
|
+ log.info("刷新京东状态完成");
|
|
|
ThreadUtil.safeSleep(10000);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
- public void handleRefreshDate(JdClient jdClient) throws Exception {
|
|
|
- //1.查询列表订单状态不为审核不通过/供应商驳回/已完成
|
|
|
- int pageIndex = 1;
|
|
|
- long totalPage = 1;
|
|
|
- int pageSize = 30;
|
|
|
- Page<JdOrder> page = new Page<>(1, 30);
|
|
|
- do{
|
|
|
- Page<JdOrder> jdOrderPage = jdOrderService.page(page, q->q.notIn(JdOrder::getState, notIn).orderByAsc(JdOrder::getCreatedDate));
|
|
|
- //2.按每30个订单查询京东订单状态
|
|
|
- totalPage = jdOrderPage.getTotal();
|
|
|
- List<JdOrder> records = jdOrderPage.getRecords();
|
|
|
- List<Long> orderIds = records.stream().map(JdOrder::getOrderId).collect(Collectors.toList());
|
|
|
- JOSOrderResultDto josOrderResultDto = getJdOrderInfo(pageIndex, pageSize + 20, records.get(0).getCreatedDate(), DateUtil.offsetDay(records.get(0).getCreatedDate(), 90), jdClient, orderIds);
|
|
|
- List<PurchaseOrderDto> purchaseOrderList = josOrderResultDto.getPurchaseOrderList();
|
|
|
- //3.更新订单信息
|
|
|
- for (PurchaseOrderDto purchaseOrderDto : purchaseOrderList) {
|
|
|
- jdOrderService.lambdaUpdate().eq(JdOrder::getOrderId, purchaseOrderDto.getOrderId());
|
|
|
- }
|
|
|
- }while (pageIndex <= totalPage);
|
|
|
+ public void handleRefreshDate(JdClient jdClient) {
|
|
|
+ DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
|
|
|
+ SecurityUtils.setTenantId(tenantId);
|
|
|
+ try {
|
|
|
+ //1.查询列表订单状态不为审核不通过/供应商驳回/已完成
|
|
|
+ int pageIndex = 1;
|
|
|
+ long totalPage = 1;
|
|
|
+ int pageSize = 30;
|
|
|
+ Page<JdOrder> page = new Page<>(1, 30);
|
|
|
+ do {
|
|
|
+ Page<JdOrder> jdOrderPage = jdOrderService.lambdaQuery().notIn(JdOrder::getState, notIn).orderByAsc(JdOrder::getCreatedDate).page(page);
|
|
|
+ //2.按每30个订单查询京东订单状态
|
|
|
+ List<JdOrder> records = jdOrderPage.getRecords();
|
|
|
+ totalPage = (jdOrderPage.getTotal() / pageSize) + (jdOrderPage.getTotal() % pageSize > 0 ? 1 : 0);
|
|
|
+ List<Long> orderIds = records.stream().map(JdOrder::getOrderId).collect(Collectors.toList());
|
|
|
+ JOSOrderResultDto josOrderResultDto = getJdOrderInfo(pageIndex, pageSize + 20, records.get(0).getCreatedDate(), DateUtil.offsetDay(records.get(0).getCreatedDate(), 90), jdClient, 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));
|
|
|
+ //3.更新订单信息
|
|
|
+ for (JdOrder jdOrder : jdOrderList) {
|
|
|
+ Long id = collect.get(jdOrder.getOrderId()).getId();
|
|
|
+ jdOrder.setId(id);
|
|
|
+ System.out.println(123);
|
|
|
+ DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
|
|
|
+ jdOrderService.saveOrUpdate(jdOrder);
|
|
|
+ }
|
|
|
+ pageIndex++;
|
|
|
+ } while (pageIndex <= totalPage);
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("刷新京东状态失败", e);
|
|
|
+ }finally {
|
|
|
+ DynamicDataSourceContextHolder.poll();
|
|
|
+ SecurityUtils.clearTenantId();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -378,6 +393,9 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
for (Component component : arg89) {
|
|
|
commonDictDataList.add(new CommonDictData(component.getKey(), component.getName()));
|
|
|
}
|
|
|
+ if ("orderAttribute".equals(k)){
|
|
|
+ System.out.println(123);
|
|
|
+ }
|
|
|
handleDictData(commonDictDataList, dictTenantType);
|
|
|
|
|
|
} catch (Exception e) {
|
|
@@ -492,44 +510,46 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
|
|
|
//处理数据(过滤已存在的数据)
|
|
|
List<Long> jdOrderIds = purchaseOrderList.stream().map(PurchaseOrderDto::getOrderId).collect(Collectors.toList());
|
|
|
- //获取已同步的京东订单id
|
|
|
- List<Long> jdOrderIds1 = jdOrderService.lambdaQuery().select(JdOrder::getOrderId).in(JdOrder::getOrderId, jdOrderIds).list().stream().map(JdOrder::getOrderId).collect(Collectors.toList());
|
|
|
- //过滤出未同步的数据
|
|
|
- List<PurchaseOrderDto> purchaseOrderListFilter = purchaseOrderList.stream().filter(item -> !jdOrderIds1.contains(item.getOrderId())).collect(Collectors.toList());
|
|
|
- //转为系统自己的实体类
|
|
|
- List<JdOrder> jdOrderList = BeanUtil.copyToList(purchaseOrderListFilter, JdOrder.class);
|
|
|
- //赋值租户id
|
|
|
- jdOrderList.forEach(item -> item.setTenantId(tenantId));
|
|
|
- //将数据存储到库
|
|
|
- jdOrderService.saveBatch(jdOrderList);
|
|
|
- //获取明细
|
|
|
- List<JdOrderDetails> jdOrderDetailsList = new ArrayList<>();
|
|
|
- for (JdOrder jdOrder : jdOrderList) {
|
|
|
- VcGetdetailbyorderidRequest request = new VcGetdetailbyorderidRequest();
|
|
|
- request.setOrderId(jdOrder.getOrderId());
|
|
|
- request.setIsPage(false);
|
|
|
- VcGetdetailbyorderidResponse response = client.execute(request);
|
|
|
- JOSDetailResultDto josDetailResultDto = response.getJosDetailResultDto();
|
|
|
- List<PurchaseAllocationDetailDto> purchaseAllocationDetailList = josDetailResultDto.getPurchaseAllocationDetailList();
|
|
|
- List<JdOrderDetails> jdOrderDetails = BeanUtil.copyToList(purchaseAllocationDetailList, JdOrderDetails.class);
|
|
|
- DynamicDataSourceContextHolder.push(SourceConstant.ITEM);
|
|
|
- jdOrderDetails.forEach(item -> {
|
|
|
- item.setJdOrderId(jdOrder.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());
|
|
|
- }
|
|
|
- });
|
|
|
- jdOrderDetailsList.addAll(jdOrderDetails);
|
|
|
+ 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(tenantId));
|
|
|
+ //将数据存储到库
|
|
|
+ jdOrderService.saveBatch(jdOrderList);
|
|
|
+ //获取明细
|
|
|
+ List<JdOrderDetails> jdOrderDetailsList = new ArrayList<>();
|
|
|
+ for (JdOrder jdOrder : jdOrderList) {
|
|
|
+ VcGetdetailbyorderidRequest request = new VcGetdetailbyorderidRequest();
|
|
|
+ request.setOrderId(jdOrder.getOrderId());
|
|
|
+ request.setIsPage(false);
|
|
|
+ VcGetdetailbyorderidResponse response = client.execute(request);
|
|
|
+ JOSDetailResultDto josDetailResultDto = response.getJosDetailResultDto();
|
|
|
+ List<PurchaseAllocationDetailDto> purchaseAllocationDetailList = josDetailResultDto.getPurchaseAllocationDetailList();
|
|
|
+ List<JdOrderDetails> jdOrderDetails = BeanUtil.copyToList(purchaseAllocationDetailList, JdOrderDetails.class);
|
|
|
+ DynamicDataSourceContextHolder.push(SourceConstant.ITEM);
|
|
|
+ jdOrderDetails.forEach(item -> {
|
|
|
+ item.setJdOrderId(jdOrder.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());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ jdOrderDetailsList.addAll(jdOrderDetails);
|
|
|
+ }
|
|
|
+ // //赋值租户id
|
|
|
+ // jdOrderList.forEach(item -> item.setTenantId(tenantId));
|
|
|
+ DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
|
|
|
+ jdOrderDetailsService.saveOrUpdateBatch(jdOrderDetailsList);
|
|
|
}
|
|
|
- // //赋值租户id
|
|
|
- // jdOrderList.forEach(item -> item.setTenantId(tenantId));
|
|
|
- DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
|
|
|
- jdOrderDetailsService.saveOrUpdateBatch(jdOrderDetailsList);
|
|
|
pageIndex++;
|
|
|
} while (pageIndex <= totalPage);
|
|
|
} catch (Exception e){
|
|
@@ -545,59 +565,72 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
/**
|
|
|
* 获取京东退货订单
|
|
|
*/
|
|
|
- private void getJdBackOrder(JdClient client, JdInfoVo jdInfoVo) throws Exception {
|
|
|
- int pageIndex = 1;
|
|
|
- int totalPage = 1;
|
|
|
- int pageSize = 50;
|
|
|
- do {
|
|
|
- Date startTime = jdInfoVo.getInitQueryDate();
|
|
|
- Date endTime = new Date();
|
|
|
- //根据下单时间获取数据库里最后一个订单
|
|
|
- JdBack lastJdBack = jdBackService.getOne(q -> q.isNotNull(JdBack::getCreateDate).orderByDesc(JdBack::getCreateDate));
|
|
|
- if (ObjectUtil.isNotEmpty(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);
|
|
|
- Integer recordCount = jdBackOrderInfo.getRecordCount();
|
|
|
- List<RoDto> roDtoList = jdBackOrderInfo.getRoDtoList();
|
|
|
- //京东回来的数据是按时间倒序的,使用reverse方法将list中的数据翻转为正序
|
|
|
- Collections.reverse(roDtoList);
|
|
|
-
|
|
|
- //过滤出不在数据库里的新数据
|
|
|
- List<Long> returnIds = roDtoList.stream().map(RoDto::getReturnId).collect(Collectors.toList());
|
|
|
- List<Long> existReturnIds = jdBackService.listObject(JdBack::getReturnId, q -> q.in(JdBack::getReturnId, returnIds));
|
|
|
- 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<>();
|
|
|
- for (JdBack jdBack : jdBackList) {
|
|
|
- VcGetReturnOrderDetailRequest request = new VcGetReturnOrderDetailRequest();
|
|
|
- request.setReturnId(jdBack.getReturnId());
|
|
|
- VcGetReturnOrderDetailResponse response = client.execute(request);
|
|
|
- DetailResultDto detailResultDto = response.getDetailResultDto();
|
|
|
+ private void getJdBackOrder(JdClient client, JdInfoVo jdInfoVo) {
|
|
|
+ DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
|
|
|
+ SecurityUtils.setTenantId(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);
|
|
|
|
|
|
- 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());
|
|
|
+ //京东回来的数据是按时间倒序的,使用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);
|
|
|
}
|
|
|
- });
|
|
|
- JdBackDetailsList.addAll(jdBackDetails);
|
|
|
- }
|
|
|
- jdBackDetailsService.saveBatch(JdBackDetailsList);
|
|
|
- pageIndex++;
|
|
|
- } while (pageIndex <= totalPage);
|
|
|
+ jdBackDetailsService.saveBatch(JdBackDetailsList);
|
|
|
+ }
|
|
|
+ pageIndex++;
|
|
|
+ } while (pageIndex <= totalPage);
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("获取京东退货订单出错:" + e.getMessage(), e);
|
|
|
+ }finally {
|
|
|
+ SecurityUtils.clearTenantId();
|
|
|
+ DynamicDataSourceContextHolder.poll();
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|