|
@@ -0,0 +1,83 @@
|
|
|
+package com.usky.dxtop.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.usky.dxtop.common.core.page.CommonPage;
|
|
|
+import com.usky.dxtop.common.exception.CustomException;
|
|
|
+import com.usky.dxtop.common.utils.SecurityUtils;
|
|
|
+import com.usky.dxtop.common.utils.StringUtils;
|
|
|
+import com.usky.dxtop.mapper.SysAsyncTaskMapper;
|
|
|
+import com.usky.dxtop.model.SysAsyncTask;
|
|
|
+import com.usky.dxtop.service.ISysAsyncTaskService;
|
|
|
+import com.usky.dxtop.service.ISysConfigService;
|
|
|
+import com.usky.dxtop.service.emun.AsyncResultType;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.Calendar;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.Objects;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author fanzhiqiang
|
|
|
+ */
|
|
|
+@Service
|
|
|
+@AllArgsConstructor
|
|
|
+public class SysAsyncTaskServiceImpl extends ServiceImpl<SysAsyncTaskMapper, SysAsyncTask> implements ISysAsyncTaskService {
|
|
|
+
|
|
|
+ private final ISysConfigService sysConfigService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Long getId(String userId, String userName, String funcType) {
|
|
|
+ int limit = Integer.parseInt(sysConfigService.selectConfigByKey("sys.async.operationLimit"));
|
|
|
+ Calendar c = Calendar.getInstance();
|
|
|
+ c.setTime(new Date());
|
|
|
+ c.add(Calendar.HOUR, -1);
|
|
|
+ Integer count = baseMapper.getCountByUserIdAndFuncTypeAndCreateTime(userId, funcType, c.getTime());
|
|
|
+ if (count != null && count >= limit) {
|
|
|
+ throw new CustomException("暂时无法开启异步任务");
|
|
|
+ }
|
|
|
+ SysAsyncTask sysAsyncTask = new SysAsyncTask();
|
|
|
+ sysAsyncTask.setStartTime(new Date());
|
|
|
+ sysAsyncTask.setCreateBy(SecurityUtils.getUsername());
|
|
|
+ sysAsyncTask.setFuncType(funcType);
|
|
|
+ save(sysAsyncTask);
|
|
|
+ return sysAsyncTask.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonPage<SysAsyncTask> getList(Long asyncTaskId, Date startTime, Date endTime, String funcType, String userName, Integer current, Integer size) {
|
|
|
+ Page<SysAsyncTask> page = new Page<>(current, size);
|
|
|
+ LambdaQueryWrapper<SysAsyncTask> queryWrapper = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper.eq(asyncTaskId != null, SysAsyncTask::getId, asyncTaskId)
|
|
|
+ .ge(startTime != null, SysAsyncTask::getStartTime, startTime)
|
|
|
+ .le(endTime != null, SysAsyncTask::getStartTime, endTime)
|
|
|
+ .eq(StringUtils.isNotBlank(funcType), SysAsyncTask::getFuncType, funcType)
|
|
|
+ .eq(StringUtils.isNotBlank(userName), SysAsyncTask::getCreateBy, userName);
|
|
|
+ page = page(page, queryWrapper);
|
|
|
+ return new CommonPage<>(page.getRecords(),page.getTotal(),page.getCurrent(),page.getSize());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void sendResult(Long id, Boolean isSuccess, String result, AsyncResultType resultType) {
|
|
|
+ SysAsyncTask sysAsyncTask = new SysAsyncTask();
|
|
|
+ sysAsyncTask.setId(id);
|
|
|
+ sysAsyncTask.setIsSuccess(isSuccess);
|
|
|
+ sysAsyncTask.setResult(result);
|
|
|
+ sysAsyncTask.setResultType(resultType.name());
|
|
|
+ if (Objects.equals(AsyncResultType.FILE, resultType)) {
|
|
|
+ sysAsyncTask.setResultKey(result);
|
|
|
+ }
|
|
|
+ sysAsyncTask.setEndTime(new Date());
|
|
|
+ this.updateById(sysAsyncTask);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void sendResult(SysAsyncTask sysAsyncTask) {
|
|
|
+ sysAsyncTask.setEndTime(new Date());
|
|
|
+ this.updateById(sysAsyncTask);
|
|
|
+ }
|
|
|
+}
|