feat:门店最近订货时间定时任务
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user