package cn.com.qmth.scancentral.controller.admin; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.qmth.boot.api.annotation.Aac; import com.qmth.boot.api.constant.ApiConstant; import com.qmth.boot.core.exception.ParameterException; import cn.com.qmth.scancentral.controller.BaseController; import cn.com.qmth.scancentral.service.AsyncTaskService; import cn.com.qmth.scancentral.util.Calculator; import cn.com.qmth.scancentral.vo.asynctask.AsyncProgressVo; import cn.com.qmth.scancentral.vo.asynctask.AsyncTaskVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @RestController @Api(tags = "异步任务接口") @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/admin/async-task") @Aac(strict = false, auth = true) public class AsyncTaskController extends BaseController { @Autowired private AsyncTaskService asyncTaskService; @ApiOperation(value = "异步任务进度查询") @PostMapping("progress") public AsyncProgressVo progress(@RequestParam String taskId) { AsyncTaskVo vo = asyncTaskService.getTask(taskId); if (vo == null) { throw new ParameterException("未找到导出任务"); } vo.setProgress(Calculator.percentageDouble(vo.getProgressCount(), vo.getTotalCount())); if (vo.getProgress() == 100 && vo.getProgressCount() != vo.getTotalCount()) { vo.setProgress(99.99); } AsyncProgressVo ret = new AsyncProgressVo(); ret.setErrMsg(vo.getErrMsg()); ret.setProgress(vo.getProgress()); ret.setStatus(vo.getStatus()); return ret; } }