WebUploadJob.java 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package com.example.demo.service;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.example.demo.domain.entity.QrtzTask;
  4. import com.example.demo.domain.entity.QrtzTaskDetail;
  5. import com.example.demo.model.dto.WebQueryDTO;
  6. import org.apache.commons.logging.Log;
  7. import org.apache.commons.logging.LogFactory;
  8. import org.quartz.DisallowConcurrentExecution;
  9. import org.quartz.JobExecutionContext;
  10. import org.quartz.JobExecutionException;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.scheduling.quartz.QuartzJobBean;
  13. import java.util.ArrayList;
  14. import java.util.Arrays;
  15. import java.util.Date;
  16. import java.util.List;
  17. /**
  18. * 定义任务
  19. */
  20. @DisallowConcurrentExecution
  21. public class WebUploadJob extends QuartzJobBean {
  22. private static final Log logger = LogFactory.getLog(WebUploadJob.class);
  23. @Autowired
  24. private QrTaskService qrTaskService;
  25. @Autowired
  26. private QrTaskDetailService qrTaskDetailService;
  27. @Autowired
  28. private UploadFromWebService uploadFromWebService;
  29. @Override
  30. public void executeInternal(JobExecutionContext context) throws JobExecutionException {
  31. //查找是否有任务正在进行
  32. LambdaQueryWrapper<QrtzTaskDetail> queryWrapper = new LambdaQueryWrapper<>();
  33. queryWrapper.in(QrtzTaskDetail::getTaskDetailState, Arrays.asList(1, 7, 8));
  34. List<QrtzTaskDetail> qrtzTaskDetailList = qrTaskDetailService.list(queryWrapper);
  35. //当无任务在进行时
  36. if (qrtzTaskDetailList.size() == 0) {
  37. LambdaQueryWrapper<QrtzTaskDetail> getDoingWrapper = new LambdaQueryWrapper<>();
  38. getDoingWrapper.eq(QrtzTaskDetail::getTaskDetailState, 0)
  39. .orderByAsc(QrtzTaskDetail::getTaskOrder).last("limit 1");
  40. QrtzTaskDetail qrtzTaskDetail = qrTaskDetailService.getOne(getDoingWrapper);
  41. if (qrtzTaskDetail != null) {
  42. qrtzTaskDetail.setTaskDetailState(1);
  43. qrtzTaskDetail.setStartTime(new Date());
  44. qrtzTaskDetail.updateById();
  45. logger.info("上传任务" + "信息是" + qrtzTaskDetail);
  46. QrtzTask qrtzTask = qrTaskService.getById(qrtzTaskDetail.getTaskId());
  47. qrtzTask.setTaskState(1);
  48. qrtzTask.updateById();
  49. String[] cells = qrtzTask.getConfigCells().split(",");
  50. List<String> conCells = new ArrayList<>(Arrays.asList(cells));
  51. WebQueryDTO webQueryDTO = new WebQueryDTO();
  52. webQueryDTO.setConCells(conCells);
  53. webQueryDTO.setWebConfigId(qrtzTask.getConfigId());
  54. webQueryDTO.setConditions(qrtzTask.getConditions());
  55. webQueryDTO.setProjectId(qrtzTask.getProjectId());
  56. webQueryDTO.setTaskId(qrtzTaskDetail.getId());
  57. try {
  58. uploadFromWebService.getPatentStar(webQueryDTO);
  59. } catch (Exception e) {
  60. e.printStackTrace();
  61. }
  62. }
  63. }
  64. }
  65. }