提交 074d5470 authored 作者: 吕本才's avatar 吕本才

1、修复定时任务不退出的问题,

2、增加总条数的日志记录
上级 8c70b4da
...@@ -18,5 +18,6 @@ public class FinanceSyncOrderDetailDto { ...@@ -18,5 +18,6 @@ public class FinanceSyncOrderDetailDto {
private Integer syncType; private Integer syncType;
private String batchNo; private String batchNo;
private Integer pageNo; private Integer pageNo;
private Integer totalCount;
} }
package com.sfa.job.pojo.response;
import com.alibaba.fastjson2.JSONArray;
import lombok.Data;
/**
* @author lvbencai
* @date 2025-01-22 21:15:39
* @Description: 旺店通查询订单请求参数, 可以按照旺店通的来定义
*/
@Data
public class WangdiantongQueryDto {
private JSONArray result;
private Integer totalCount;
}
package com.sfa.job.service.order.impl; package com.sfa.job.service.order.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONReader; import com.alibaba.fastjson2.JSONReader;
import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DS;
...@@ -13,12 +15,12 @@ import com.sfa.job.domain.order.entity.*; ...@@ -13,12 +15,12 @@ import com.sfa.job.domain.order.entity.*;
import com.sfa.job.domain.order.mapper.FinanceOrderMapper; import com.sfa.job.domain.order.mapper.FinanceOrderMapper;
import com.sfa.job.pojo.request.WangdiantongQueryVO; import com.sfa.job.pojo.request.WangdiantongQueryVO;
import com.sfa.job.pojo.response.FinanceSyncOrderDetailDto; import com.sfa.job.pojo.response.FinanceSyncOrderDetailDto;
import com.sfa.job.pojo.response.WangdiantongQueryDto;
import com.sfa.job.service.order.FinanceBaseProductService; import com.sfa.job.service.order.FinanceBaseProductService;
import com.sfa.job.service.order.FinanceBaseZbjTypeService; import com.sfa.job.service.order.FinanceBaseZbjTypeService;
import com.sfa.job.service.order.FinanceOrderDetailService; import com.sfa.job.service.order.FinanceOrderDetailService;
import com.sfa.job.service.order.FinanceOrderSyncService; import com.sfa.job.service.order.FinanceOrderSyncService;
import com.sfa.job.util.WangdiantongUtil; import com.sfa.job.util.WangdiantongUtil;
import com.xxl.job.core.util.DateUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -78,11 +80,11 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper, ...@@ -78,11 +80,11 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
if (ObjectUtils.isNotEmpty(collectOrderLogInfo)) { if (ObjectUtils.isNotEmpty(collectOrderLogInfo)) {
latestTime = collectOrderLogInfo.getLatestTime(); latestTime = collectOrderLogInfo.getLatestTime();
Integer pageNoExist = collectOrderLogInfo.getPageNo(); Integer pageNoExist = collectOrderLogInfo.getPageNo();
beginPageNo.set( pageNoExist > 0? collectOrderLogInfo.getPageNo() : 0); beginPageNo.set(ObjectUtil.isNotEmpty(pageNoExist) && pageNoExist > 0 ? collectOrderLogInfo.getPageNo() : 0);
nextPageFlag = pageNoExist > 0; nextPageFlag = beginPageNo.get() > 0;
} else { } else {
// 默认上个月的第一天 00:00:00 // 默认上个月的第一天 00:00:00
startTime = cn.hutool.core.date.DateUtil.beginOfDay(cn.hutool.core.date.DateUtil.beginOfMonth(cn.hutool.core.date.DateUtil.lastMonth())); startTime = DateUtil.beginOfDay(DateUtil.beginOfMonth(DateUtil.lastMonth()));
} }
if (nextPageFlag) { if (nextPageFlag) {
...@@ -102,14 +104,15 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper, ...@@ -102,14 +104,15 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
if (ObjectUtils.isEmpty(endTime)) { if (ObjectUtils.isEmpty(endTime)) {
endTime = DateUtils.addMinutes(startTime, 60); endTime = DateUtils.addMinutes(startTime, 60);
} }
log.info("查询订单参数:开始时间{},结束时间{},当前页:{}", DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(endTime),beginPageNo.get()); log.info("查询订单参数:开始时间{},结束时间{},当前页:{}", DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(endTime), beginPageNo.get());
WangdiantongQueryVO wangdiantongQueryVO = new WangdiantongQueryVO(); WangdiantongQueryVO wangdiantongQueryVO = new WangdiantongQueryVO();
wangdiantongQueryVO.setStart_time(com.alibaba.fastjson2.util.DateUtils.format(startTime)); wangdiantongQueryVO.setStart_time(com.alibaba.fastjson2.util.DateUtils.format(startTime));
wangdiantongQueryVO.setEnd_time(com.alibaba.fastjson2.util.DateUtils.format(endTime)); wangdiantongQueryVO.setEnd_time(com.alibaba.fastjson2.util.DateUtils.format(endTime));
// 旺店通入参 和其他入参分开传入 旺店通入参bean转map // 旺店通入参 和其他入参分开传入 旺店通入参bean转map
JSONArray orderAllArray = wangdiantongUtil.queryWithDetail(wangdiantongQueryVO, beginPageNo); WangdiantongQueryDto wangdiantongQueryDto = wangdiantongUtil.queryWithDetail(wangdiantongQueryVO, beginPageNo);
JSONArray orderAllArray = wangdiantongQueryDto.getResult();
if (ObjectUtils.isEmpty(orderAllArray)) { if (ObjectUtils.isEmpty(orderAllArray)) {
throw new ServiceException("旺店通没有查询到订单数据"); throw new ServiceException("旺店通没有查询到订单数据");
} }
...@@ -217,6 +220,7 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper, ...@@ -217,6 +220,7 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
detailDto.setStartTime(finalStartTime); detailDto.setStartTime(finalStartTime);
detailDto.setPageNo(beginPageNo.get()); detailDto.setPageNo(beginPageNo.get());
detailDto.setEndTime(finalEndTime); detailDto.setEndTime(finalEndTime);
detailDto.setTotalCount(wangdiantongQueryDto.getTotalCount());
detailDto.setBatchNo(batchNo); detailDto.setBatchNo(batchNo);
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
......
...@@ -6,6 +6,7 @@ import com.alibaba.fastjson2.JSONObject; ...@@ -6,6 +6,7 @@ import com.alibaba.fastjson2.JSONObject;
import com.lark.oapi.okhttp.*; import com.lark.oapi.okhttp.*;
import com.sfa.common.core.exception.ServiceException; import com.sfa.common.core.exception.ServiceException;
import com.sfa.job.pojo.request.WangdiantongQueryVO; import com.sfa.job.pojo.request.WangdiantongQueryVO;
import com.sfa.job.pojo.response.WangdiantongQueryDto;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -24,13 +25,13 @@ public class WangdiantongUtil { ...@@ -24,13 +25,13 @@ public class WangdiantongUtil {
/** /**
* 卖家账号/接口账号/盐/接口名称 * 卖家账号/接口账号/盐/接口名称
*/ */
public JSONArray queryWithDetail(WangdiantongQueryVO wangdiantongQuery, AtomicInteger beginPageNo) { public WangdiantongQueryDto queryWithDetail(WangdiantongQueryVO wangdiantongQuery, AtomicInteger beginPageNo) {
WangdiantongQueryDto wangdiantongQueryDto = new WangdiantongQueryDto();
JSONArray allArray = new JSONArray(); JSONArray allArray = new JSONArray();
Integer totalCount = 0;
try { try {
// 最大处理量,超过了,不再查询 // 最大处理量,超过了,不再查询
int maxDealCount = 500; int maxDealCount = 500;
int currentDealTotal = 0;
int size = 0; int size = 0;
int pageNo = beginPageNo.get(); int pageNo = beginPageNo.get();
int maxPage = 0; int maxPage = 0;
...@@ -54,7 +55,7 @@ public class WangdiantongUtil { ...@@ -54,7 +55,7 @@ public class WangdiantongUtil {
List<HashMap<String, Object>> paramsList = Arrays.asList(params); List<HashMap<String, Object>> paramsList = Arrays.asList(params);
String signParams = appsecret + "body" + JSONObject.toJSONString(paramsList) + "calc_total1" + "key" + key String signParams = appsecret + "body" + JSONObject.toJSONString(paramsList) + "calc_total1" + "key" + key
+ "method" + method + "page_no"+ pageNo + "page_size200" + "salt" + salt + "sid" + sid + + "method" + method + "page_no" + pageNo + "page_size200" + "salt" + salt + "sid" + sid +
"timestamp" + (System.currentTimeMillis() / 1000 - 1325347200) + "v" + v + appsecret; "timestamp" + (System.currentTimeMillis() / 1000 - 1325347200) + "v" + v + appsecret;
String sign = DigestUtils.md5DigestAsHex(signParams.toString().getBytes()); String sign = DigestUtils.md5DigestAsHex(signParams.toString().getBytes());
log.debug(signParams); log.debug(signParams);
...@@ -85,25 +86,27 @@ public class WangdiantongUtil { ...@@ -85,25 +86,27 @@ public class WangdiantongUtil {
log.error("访问旺店通接口错误" + messageJson.toString()); log.error("访问旺店通接口错误" + messageJson.toString());
throw new ServiceException("访问旺店通接口错误" + messageJson.toString()); throw new ServiceException("访问旺店通接口错误" + messageJson.toString());
} }
Integer totalCount = dataR.getInteger("total_count"); totalCount = dataR.getInteger("total_count");
JSONArray orderJsonArray = dataR.getJSONArray("order"); JSONArray orderJsonArray = dataR.getJSONArray("order");
currentDealTotal = totalCount;
allArray.addAll(orderJsonArray); allArray.addAll(orderJsonArray);
size = allArray.size(); size = allArray.size();
pageNo++; pageNo++;
maxPage = (totalCount / 200);
log.info("当前时间段{}-{},查询返回的order条数:{},总条数totalCount:{},page_no:{}", wangdiantongQuery.getStart_time(), wangdiantongQuery.getEnd_time(), orderJsonArray.size(), totalCount, pageNo); log.info("当前时间段{}-{},查询返回的order条数:{},总条数totalCount:{},page_no:{}", wangdiantongQuery.getStart_time(), wangdiantongQuery.getEnd_time(), orderJsonArray.size(), totalCount, pageNo);
} while (size < maxDealCount && size < currentDealTotal); } while (size < maxDealCount && pageNo <= maxPage);
maxPage = (currentDealTotal / 200);
if (pageNo >= maxPage) { if (pageNo >= maxPage) {
beginPageNo.set(-1); beginPageNo.set(-1);
} else { } else {
beginPageNo.set(pageNo); beginPageNo.set(pageNo);
} }
return allArray; wangdiantongQueryDto.setResult(allArray);
wangdiantongQueryDto.setTotalCount(totalCount);
} catch (Exception e) { } catch (Exception e) {
// 记录异常日志 // 记录异常日志
log.error("异常信息:{}" + e.getMessage(), e); log.error("异常信息:{}" + e.getMessage(), e);
return allArray; throw new ServiceException("旺店通接口获取数据错误" + e.getMessage());
} }
return wangdiantongQueryDto;
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论