package com.example.demo.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.example.demo.domain.entity.QrtzTask; import com.example.demo.domain.entity.QrtzTaskDetail; import com.example.demo.model.dto.WebQueryDTO; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.quartz.DisallowConcurrentExecution; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.quartz.QuartzJobBean; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; /** * 定义任务 */ @DisallowConcurrentExecution public class WebUploadJob extends QuartzJobBean { private static final Log logger = LogFactory.getLog(WebUploadJob.class); @Autowired private QrTaskService qrTaskService; @Autowired private QrTaskDetailService qrTaskDetailService; @Autowired private UploadFromWebService uploadFromWebService; @Override public void executeInternal(JobExecutionContext context) throws JobExecutionException { //查找是否有任务正在进行 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.in(QrtzTaskDetail::getTaskDetailState, Arrays.asList(1, 7, 8)); List qrtzTaskDetailList = qrTaskDetailService.list(queryWrapper); //当无任务在进行时 if (qrtzTaskDetailList.size() == 0) { LambdaQueryWrapper getDoingWrapper = new LambdaQueryWrapper<>(); getDoingWrapper.eq(QrtzTaskDetail::getTaskDetailState, 0) .orderByAsc(QrtzTaskDetail::getTaskOrder).last("limit 1"); QrtzTaskDetail qrtzTaskDetail = qrTaskDetailService.getOne(getDoingWrapper); if (qrtzTaskDetail != null) { qrtzTaskDetail.setTaskDetailState(1); qrtzTaskDetail.setStartTime(new Date()); qrtzTaskDetail.updateById(); logger.info("上传任务" + "信息是" + qrtzTaskDetail); QrtzTask qrtzTask = qrTaskService.getById(qrtzTaskDetail.getTaskId()); qrtzTask.setTaskState(1); qrtzTask.updateById(); String[] cells = qrtzTask.getConfigCells().split(","); List conCells = new ArrayList<>(Arrays.asList(cells)); WebQueryDTO webQueryDTO = new WebQueryDTO(); webQueryDTO.setConCells(conCells); webQueryDTO.setWebConfigId(qrtzTask.getConfigId()); webQueryDTO.setConditions(qrtzTask.getConditions()); webQueryDTO.setProjectId(qrtzTask.getProjectId()); webQueryDTO.setTaskId(qrtzTaskDetail.getId()); try { uploadFromWebService.getPatentStar(webQueryDTO); } catch (Exception e) { e.printStackTrace(); } } } } }