feat:门店最近订货时间定时任务

This commit is contained in:
wangff
2025-10-27 13:32:23 +08:00
parent 4063cdcfee
commit b2076cc6c5
11 changed files with 277 additions and 4 deletions

View File

@@ -1,5 +1,6 @@
package com.cool.store.job;
import cn.hutool.core.collection.CollStreamUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.constants.CommonConstants;
@@ -7,6 +8,7 @@ import com.cool.store.dao.*;
import com.cool.store.dto.*;
import com.cool.store.dto.decoration.ConstructionScheduleDTO;
import com.cool.store.dto.openPreparation.OpenPlanShopInfoDTO;
import com.cool.store.dto.store.StoreOrderTimeDTO;
import com.cool.store.entity.*;
import com.cool.store.enums.*;
import com.cool.store.enums.point.ShopStatusEnum;
@@ -19,7 +21,9 @@ import com.cool.store.mapper.TrainingExperienceMapper;
import com.cool.store.mq.producer.SimpleMessageService;
import com.cool.store.mq.util.HttpRestTemplateService;
import com.cool.store.request.ZxjpApiRequest;
import com.cool.store.request.bigdata.LatestOrderDateRequest;
import com.cool.store.request.xfsgFirstOrderListRequest;
import com.cool.store.response.bigdata.LatestOrderDateResponse;
import com.cool.store.response.xfsgFirstOderListResponse;
import com.cool.store.service.*;
import com.cool.store.service.impl.CommonService;
@@ -40,6 +44,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
@@ -111,6 +116,10 @@ public class XxlJobHandler {
@Resource
PushService pushService;
@Resource
StoreDao storeDao;
@Resource
ThirdBigDataService thirdBigDataService;
/**
@@ -395,4 +404,50 @@ public class XxlJobHandler {
}
}
@XxlJob("latestOrderDate")
public void latestOrderDate() {
log.info("------start latestOrderDate------");
boolean hasNext = true;
int pageNum = 1;
int pageSize = CommonConstants.BATCH_SIZE;
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
while (hasNext) {
PageHelper.startPage(pageNum, pageSize);
List<StoreDO> storeList = storeDao.getAllStoreIdAndNum();
if (CollectionUtils.isEmpty(storeList)) {
break;
}
hasNext = storeList.size() >= pageSize;
List<String> storeNums = CollStreamUtil.toList(storeList, StoreDO::getStoreNum);
Map<String, String> storeIdMap = CollStreamUtil.toMap(storeList, StoreDO::getStoreNum, StoreDO::getStoreId);
LatestOrderDateRequest request = new LatestOrderDateRequest(1, pageSize, String.join(",", storeNums));
List<LatestOrderDateResponse> resList = thirdBigDataService.getLatestOrderDate(request);
log.info("接口请求门店数量:{},返回门店数:{}", storeList.size(), resList.size());
if (CollectionUtils.isNotEmpty(resList)) {
try {
List<StoreOrderTimeDTO> updateList = resList.stream()
.map(v -> {
Date date = parseDate(v, dateFormat);
return Objects.nonNull(date) ? new StoreOrderTimeDTO(storeIdMap.get(v.getStore_code()), date) : null;
})
.filter(Objects::nonNull)
.collect(Collectors.toList());
storeDao.batchInsertOrUpdateOrderTime(updateList);
} catch (Exception e) {
log.error("获取最新订货时间失败", e);
}
}
pageNum++;
}
log.info("------end latestOrderDate------");
}
public Date parseDate(LatestOrderDateResponse v, DateFormat format) {
try {
return format.parse(v.getLatest_buy_date());
} catch (ParseException e) {
log.error("日期转化失败,storeCode:{},latestBuyDate:{}", v.getStore_code(), v.getLatest_buy_date());
}
return null;
}
}