You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udi-wms-java/src/main/java/com/glxp/api/task/AsyncIoCollectOrderUploadTa...

115 lines
4.6 KiB
Java

package com.glxp.api.task;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.StrUtil;
import com.glxp.api.dao.basic.SysWorkplaceDocumentDao;
import com.glxp.api.dao.schedule.ScheduledDao;
import com.glxp.api.entity.collect.IoCollectSet;
import com.glxp.api.entity.system.ScheduledEntity;
import com.glxp.api.req.basic.WorkBindBusTypeRequest;
import com.glxp.api.req.collect.CollectOrderRequest;
import com.glxp.api.req.system.ScheduledRequest;
import com.glxp.api.res.basic.SysWorkplaceDocumentResponse;
import com.glxp.api.res.collect.IoCollectCodeResponse;
import com.glxp.api.res.collect.IoCollectOrderResponse;
import com.glxp.api.service.collect.*;
import com.glxp.api.util.MsDateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Component
@EnableScheduling
public class AsyncIoCollectOrderUploadTask implements SchedulingConfigurer {
final Logger logger = LoggerFactory.getLogger(AsyncIoCollectOrderUploadTask.class);
@Resource
private ScheduledDao scheduledDao;
@Resource
IoCollectSetService collectSetService;
@Resource
IoCollectCodeService collectCodeService;
@Resource
IoCollectOrderBackupService ioCollectOrderBackupService;
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
scheduledTaskRegistrar.addTriggerTask(() -> process(),
triggerContext -> {
ScheduledRequest scheduledRequest = new ScheduledRequest();
scheduledRequest.setCronName("ioCollectOrderUploadTask");
// 使用设置的轮询时间为准 这边进行转换
IoCollectSet ioCollectSet = collectSetService.getSet();
String cron = null;
if(ioCollectSet!= null
&& ioCollectSet.getStartUploadHour() !=null
&& ioCollectSet.getStartUploadHour() >0
){
if(ioCollectSet.getStartUploadHour() <= 24){
cron = "0 0 */"+ioCollectSet.getStartUploadHour()+" * * ? ";
}
}else {
cron = "0 0 0 */1 * ?";
}
logger.info("已完成单据自动上传轮询设置cron表达式==="+cron);
if (cron.isEmpty()) {
logger.error("cron is null");
}
return new CronTrigger(cron).nextExecutionTime(triggerContext);
});
}
private void process() {
ThreadUtil.execAsync(() -> {
//获取下载的起始时间
IoCollectSet ioCollectSet = collectSetService.getSet();
Date startUploadTime = ioCollectSet.getStartUploadTime();
String startUploadTimes = MsDateUtil.formatDateTime(startUploadTime);
Boolean autoUploadOrder = ioCollectSet.getAutoUploadOrder();
if (StrUtil.isNotBlank(startUploadTimes) && autoUploadOrder){
//获取当前时间
String paramValue = startUploadTimes;
String nowTime = MsDateUtil.getDateTime();
CollectOrderRequest collectOrderRequest = new CollectOrderRequest();
collectOrderRequest.setStartTime(paramValue);
collectOrderRequest.setEndTime(nowTime);
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(3);
collectOrderRequest.setUploadStatusList(list);
//调用上传单据
List<IoCollectOrderResponse> orderResponses = ioCollectOrderBackupService.filterList(collectOrderRequest);
if (CollUtil.isNotEmpty(orderResponses)){
orderResponses.forEach( item -> {
ioCollectOrderBackupService.orderUpload(item.getBillNo(),null);
});
}
// 无限循环去上传单据不做限制了
// ioCollectSet.setStartUploadTime(MsDateUtil.parseDate(nowTime));
// collectSetService.updateById(ioCollectSet);
}
});
}
}