|
|
@@ -16,13 +16,28 @@
|
|
|
*/
|
|
|
package org.springblade.business.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.springblade.business.dto.TaskBatchMonitorDTO;
|
|
|
+import org.springblade.business.dto.TaskBatchPage;
|
|
|
import org.springblade.business.entity.TaskBatch;
|
|
|
import org.springblade.business.mapper.TaskBatchMapper;
|
|
|
import org.springblade.business.service.ITaskBatchService;
|
|
|
+import org.springblade.business.utils.TimeConverter;
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl;
|
|
|
+import org.springblade.core.tool.api.R;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.redis.core.RedisTemplate;
|
|
|
+import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 服务实现类
|
|
|
@@ -32,6 +47,9 @@ import java.util.List;
|
|
|
*/
|
|
|
@Service
|
|
|
public class TaskBatchServiceImpl extends BaseServiceImpl<TaskBatchMapper, TaskBatch> implements ITaskBatchService {
|
|
|
+ @Autowired
|
|
|
+ private StringRedisTemplate redisTemplate;
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
public void deletedById(String id) {
|
|
|
@@ -47,4 +65,60 @@ public class TaskBatchServiceImpl extends BaseServiceImpl<TaskBatchMapper, TaskB
|
|
|
public List<TaskBatch> queryDataInfo() {
|
|
|
return baseMapper.queryDataInfo();
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R<List<TaskBatchMonitorDTO>> selectTaskBatchList(TaskBatchPage page) {
|
|
|
+ //初始化查询参数
|
|
|
+ page.setTaskType(page.getTaskType() == null ? 1 : page.getTaskType());
|
|
|
+
|
|
|
+ List<TaskBatchMonitorDTO> list = baseMapper.selectTaskBatchList(page);
|
|
|
+ for (TaskBatchMonitorDTO taskBatchMonitorDTO : list) {
|
|
|
+ String value = redisTemplate.opsForValue().get("sign-" + taskBatchMonitorDTO.getFormDataId());
|
|
|
+ if(StringUtils.isNotEmpty(value)){
|
|
|
+ taskBatchMonitorDTO.setTaskType(1);
|
|
|
+ //开始时间
|
|
|
+ DateTime startTime = DateUtil.parse(value, "yyyy-MM-dd HH:MM:ss");
|
|
|
+ taskBatchMonitorDTO.setStartTime(startTime.toString("HH:MM"));
|
|
|
+ //预计完成时间
|
|
|
+ if(taskBatchMonitorDTO.getPdfUrlSize() != null && taskBatchMonitorDTO.getPdfUrlSize() != 0){
|
|
|
+ Long pdfUrlSize = taskBatchMonitorDTO.getPdfUrlSize();
|
|
|
+ //判断偏移多少秒 每50M 30秒
|
|
|
+ int time = calculateExecutionTime((double) pdfUrlSize / 1024 / 1024);
|
|
|
+
|
|
|
+ DateTime dateTime = DateUtil.offsetSecond(startTime, time);
|
|
|
+
|
|
|
+ String s = TimeConverter.secondsToMinutesSeconds(time);
|
|
|
+ taskBatchMonitorDTO.setFinishTime(s + "(" + dateTime.toString("HH:mm") + ")");
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ taskBatchMonitorDTO.setTaskType(2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return R.data(list.stream().filter(f -> Objects.equals(f.getTaskType(), page.getTaskType())).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据文件大小计算执行时间
|
|
|
+ * @param fileSizeMB 文件大小(MB)
|
|
|
+ * @return 执行时间(秒)
|
|
|
+ */
|
|
|
+ public static int calculateExecutionTime(double fileSizeMB) {
|
|
|
+ if (fileSizeMB < 0) {
|
|
|
+ throw new IllegalArgumentException("文件大小不能为负数: " + fileSizeMB);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (fileSizeMB <= 50) {
|
|
|
+ return 30;
|
|
|
+ } else if (fileSizeMB <= 100) {
|
|
|
+ return 60;
|
|
|
+ } else if (fileSizeMB <= 150) {
|
|
|
+ return 90;
|
|
|
+ } else {
|
|
|
+ // 超过150MB,每50MB递增30秒
|
|
|
+ double excess = fileSizeMB - 150;
|
|
|
+ int increments = (int) Math.ceil(excess / 50); // 向上取整
|
|
|
+ return 90 + increments * 30;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|