WebUploadJob.java 4.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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.TaskWebSocketDTO;
  6. import com.example.demo.model.dto.WebQueryDTO;
  7. import com.example.demo.util.MathUtils;
  8. import com.example.demo.util.Response;
  9. import com.example.demo.util.ResponseEnum;
  10. import com.example.demo.util.WebSocketServer;
  11. import org.apache.commons.logging.Log;
  12. import org.apache.commons.logging.LogFactory;
  13. import org.quartz.DisallowConcurrentExecution;
  14. import org.quartz.JobExecutionContext;
  15. import org.quartz.JobExecutionException;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.scheduling.quartz.QuartzJobBean;
  18. import java.util.ArrayList;
  19. import java.util.Arrays;
  20. import java.util.Date;
  21. import java.util.List;
  22. /**
  23. * 定义任务
  24. */
  25. @DisallowConcurrentExecution
  26. public class WebUploadJob extends QuartzJobBean {
  27. private static final Log logger = LogFactory.getLog(WebUploadJob.class);
  28. @Autowired
  29. private QrTaskService qrTaskService;
  30. @Autowired
  31. private QrTaskDetailService qrTaskDetailService;
  32. @Autowired
  33. private UploadFromWebService uploadFromWebService;
  34. @Override
  35. public void executeInternal(JobExecutionContext context) throws JobExecutionException {
  36. //查找是否有任务正在进行
  37. LambdaQueryWrapper<QrtzTaskDetail> queryWrapper = new LambdaQueryWrapper<>();
  38. queryWrapper.in(QrtzTaskDetail::getTaskDetailState, Arrays.asList(1, 7, 8));
  39. List<QrtzTaskDetail> qrtzTaskDetailList = qrTaskDetailService.list(queryWrapper);
  40. //当无任务在进行时
  41. if (qrtzTaskDetailList.size() == 0) {
  42. LambdaQueryWrapper<QrtzTaskDetail> getDoingWrapper = new LambdaQueryWrapper<>();
  43. getDoingWrapper.eq(QrtzTaskDetail::getTaskDetailState, 0)
  44. .orderByAsc(QrtzTaskDetail::getTaskOrder).last("limit 1");
  45. QrtzTaskDetail qrtzTaskDetail = qrTaskDetailService.getOne(getDoingWrapper);
  46. if (qrtzTaskDetail != null) {
  47. qrtzTaskDetail.setTaskDetailState(1);
  48. qrtzTaskDetail.setStartTime(new Date());
  49. qrtzTaskDetail.updateById();
  50. logger.info("上传任务" + "信息是" + qrtzTaskDetail);
  51. QrtzTask qrtzTask = qrTaskService.getById(qrtzTaskDetail.getTaskId());
  52. qrtzTask.setTaskState(1);
  53. qrtzTask.updateById();
  54. //向前端发送信息
  55. double percentage = qrtzTaskDetail.getAllNum() == 0 ? 0 : (qrtzTaskDetail.getAllNum().equals(qrtzTaskDetail.getSuccessNum()) ? (qrtzTaskDetail.getSuccessNum() * 1D) : (qrtzTaskDetail.getSuccessNum() + 1D) / qrtzTaskDetail.getAllNum() * 100D);
  56. percentage = MathUtils.saveTwoDecimal(percentage);
  57. WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
  58. .setId(qrtzTaskDetail.getId())
  59. .setComplete(false)
  60. .setIndex(qrtzTaskDetail.getSuccessNum())
  61. .setTotal(qrtzTaskDetail.getAllNum())
  62. .setTaskDetailState(1)
  63. .setPercentage(percentage)
  64. , ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "null");
  65. String[] cells = qrtzTask.getConfigCells().split(",");
  66. List<String> conCells = new ArrayList<>(Arrays.asList(cells));
  67. WebQueryDTO webQueryDTO = new WebQueryDTO();
  68. webQueryDTO.setConCells(conCells);
  69. webQueryDTO.setWebConfigId(qrtzTask.getConfigId());
  70. webQueryDTO.setConditions(qrtzTask.getConditions());
  71. webQueryDTO.setProjectId(qrtzTask.getProjectId());
  72. webQueryDTO.setTaskId(qrtzTaskDetail.getId());
  73. try {
  74. uploadFromWebService.getPatentStar(webQueryDTO);
  75. } catch (Exception e) {
  76. e.printStackTrace();
  77. }
  78. }
  79. }
  80. }
  81. }