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 list = new ArrayList<>(); list.add(1); list.add(3); collectOrderRequest.setUploadStatusList(list); //调用上传单据 List orderResponses = ioCollectOrderBackupService.filterList(collectOrderRequest); if (CollUtil.isNotEmpty(orderResponses)){ orderResponses.forEach( item -> { ioCollectOrderBackupService.orderUpload(item.getBillNo(),null); }); } // 无限循环去上传单据不做限制了 // ioCollectSet.setStartUploadTime(MsDateUtil.parseDate(nowTime)); // collectSetService.updateById(ioCollectSet); } }); } }