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

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

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