12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- 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.TaskWebSocketDTO;
- import com.example.demo.model.dto.WebQueryDTO;
- import com.example.demo.util.MathUtils;
- import com.example.demo.util.Response;
- import com.example.demo.util.ResponseEnum;
- import com.example.demo.util.WebSocketServer;
- 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<QrtzTaskDetail> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.in(QrtzTaskDetail::getTaskDetailState, Arrays.asList(1, 7, 8));
- List<QrtzTaskDetail> qrtzTaskDetailList = qrTaskDetailService.list(queryWrapper);
- //当无任务在进行时
- if (qrtzTaskDetailList.size() == 0) {
- LambdaQueryWrapper<QrtzTaskDetail> 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();
- //向前端发送信息
- double percentage = qrtzTaskDetail.getAllNum() == 0 ? 0 : (qrtzTaskDetail.getAllNum().equals(qrtzTaskDetail.getSuccessNum()) ? (qrtzTaskDetail.getSuccessNum() * 1D) : (qrtzTaskDetail.getSuccessNum() + 1D) / qrtzTaskDetail.getAllNum() * 100D);
- percentage = MathUtils.saveTwoDecimal(percentage);
- WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
- .setId(qrtzTaskDetail.getId())
- .setComplete(false)
- .setIndex(qrtzTaskDetail.getSuccessNum())
- .setTotal(qrtzTaskDetail.getAllNum())
- .setTaskDetailState(1)
- .setPercentage(percentage)
- , ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "null");
- String[] cells = qrtzTask.getConfigCells().split(",");
- List<String> 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();
- }
- }
- }
- }
- }
|