动态任务异步读取文件,任务分配时账号同时在线分配的bug

master
yqy 3 years ago
parent 34af6a82e7
commit db8e3a1f08

@ -138,6 +138,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers( "/api/report/organize").permitAll()
.antMatchers( "/api/download/task").permitAll()
.antMatchers("/api/task/saveTask").permitAll()
.antMatchers("/api/task/update").permitAll()
.antMatchers( "/api/users/admin").permitAll()
.antMatchers( "/api/task/query").permitAll()
.antMatchers( "/api/task/sendErrMessage").permitAll()

@ -264,6 +264,9 @@ public class OrganizeServiceImpl implements OrganizeService {
List<Long> clueList = sourceClueClient.queryList(organizeSaveDTO.getTaskId()).getBody();
// 任务状态更新,创建标签
Task task = taskRepository.findById(organizeSaveDTO.getTaskId()).orElseGet(Task::new);
if (task.getIsDistribution() == 1){
throw new BadRequestException("任务已分配,刷新后重试");
}
List<String> labelNameList = organizeSaveDTO.getLabelNameList();
List<String> labelName = new ArrayList<>(new TreeSet<>(labelNameList));
task.setBaseLabel(labelName);
@ -294,6 +297,10 @@ public class OrganizeServiceImpl implements OrganizeService {
}
sourceClueClient.batchUpdateOrganize(distributeResponseDTO);
// 添加小组-任务关联信息
TaskOrganize isFlagList = taskOrganizeRepository.findByOrganizeIdAndTaskId(distributeResponseDTO.getDeptId(), task.getId());
if (isFlagList != null){
throw new BadRequestException("一个任务内分配组不能重复");
}
int organizeTaskNum = distributeResponseDTO.getResponseList().size();
TaskOrganize taskOrganize = new TaskOrganize();
taskOrganize.setTaskId(task.getId());
@ -305,7 +312,7 @@ public class OrganizeServiceImpl implements OrganizeService {
taskOrganize.setRatio(weights.get(index));
taskOrganize.setRemark(organizeList.get(index).getRemark());
index++;
TaskOrganize saveTaskOrganize = taskOrganizeRepository.save(taskOrganize);
taskOrganizeRepository.save(taskOrganize);
// 发送通知的用户id
OrganizeUser organizeUser = organizeUserRepository.findByOrganizeIdAndIsLeader(distributeResponseDTO.getDeptId(), true);
userIdList.add(organizeUser.getUserId());

@ -55,12 +55,6 @@ public class UploadFileServiceImpl implements UploadFileService {
private FileAnalysisTask fileAnalysisTask;
@Resource
private ClueRecordRepository clueRecordRepository;
@Resource
private ClueService clueService;
@Resource
private ClueMiddleRepository clueMiddleRepository;
@Resource
private TaskClient taskClient;
@Value(value = "${storage.url}")
private String URL;
@ -127,10 +121,15 @@ public class UploadFileServiceImpl implements UploadFileService {
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);
}
/**
*
*/
@Override
@SneakyThrows
@Transactional(rollbackFor = Exception.class)
public ResponseEntity<Object> taskFileUpload(MultipartFile[] files, Integer uploadType, Long userId, Long taskId) {
List<ClueRecord> clueRecordList = new ArrayList<>();
String oneFileName = files[0].getOriginalFilename();
for (MultipartFile file : files) {
String originalFilename = file.getOriginalFilename();
int lastIndexOf = originalFilename.lastIndexOf(".");
@ -153,33 +152,16 @@ public class UploadFileServiceImpl implements UploadFileService {
//保存上传记录信息
String newFileUrl = newRealPath + DE_SYMBOL + newName;
ClueRecord clueRecord = saveClueRecord(originalFilename, newFileUrl, uploadType, userId, taskId);
// 读取文件
BaseExcelVo baseExcelVo = new BaseExcelVo();
baseExcelVo.setUserId(userId);
baseExcelVo.setClueRecordId(clueRecord.getId());
baseExcelVo.setOrigin(clueRecord.getUploadType());
baseExcelVo.setTaskId(clueRecord.getTaskId());
baseExcelVo.setOneFileName(originalFilename);
EasyExcelFactory.read(newFileUrl, TaskZdyVo.class, new TaskZdyExcelListener(clueService, baseExcelVo)).build().readAll();
Integer taskNum = clueMiddleRepository.findTaskNum(taskId);
Task task = new Task();
task.setId(taskId);
task.setTotalNumber(taskNum);
task.setIsDistribution(1);
taskClient.updateTask(task);
clueRecordList.add(clueRecord);
}
//异步读取文件并更新任务
fileAnalysisTask.runFileAnalysisTask(clueRecordList, oneFileName);
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);
}
/**
*
*
* @param originalFilename
* @param newFileUrl
* @param uploadType
* @param userId
* @param taskId
* @return
*/
@Transactional(rollbackFor = Exception.class)
public ClueRecord saveClueRecord(String originalFilename, String newFileUrl, Integer uploadType, Long userId, Long taskId) {

@ -1,25 +1,24 @@
package com.baiye.task;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.excel.EasyExcelFactory;
import com.baiye.exception.BadRequestException;
import com.baiye.feign.TaskClient;
import com.baiye.module.constant.FileConstant;
import com.baiye.module.dao.ClueJpa;
import com.baiye.module.dao.ClueMiddleRepository;
import com.baiye.module.dao.ClueRecordRepository;
import com.baiye.module.dao.ClueRepository;
import com.baiye.module.entity.Clue;
import com.baiye.module.entity.ClueRecord;
import com.baiye.module.entity.Task;
import com.baiye.module.entity.vo.BaseExcelVo;
import com.baiye.module.entity.vo.KsVo;
import com.baiye.module.entity.vo.TaskZdyVo;
import com.baiye.module.entity.vo.ZdyVo;
import com.baiye.module.listener.KsExcelListener;
import com.baiye.module.listener.TaskZdyExcelListener;
import com.baiye.module.listener.UcCsvListener;
import com.baiye.module.listener.ZdyExcelListener;
import com.baiye.module.service.ClueService;
import com.baiye.util.RequestHeaderHandler;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.scheduling.annotation.Async;
@ -28,9 +27,7 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.*;
import java.util.stream.Collectors;
@ -51,7 +48,7 @@ public class FileAnalysisTask {
private TaskClient taskClient;
/**
*
*
*
* @param clueRecords
*/
@ -82,14 +79,30 @@ public class FileAnalysisTask {
log.info("==============开始导入快手表单============{}", Thread.currentThread().getName());
EasyExcelFactory.read(file, KsVo.class, new KsExcelListener(clueService, baseExcelVo)).build().readAll();
break;
case FileConstant.FIVE_NUMBER:
log.info("==============开始导入动态任务表单============{}", Thread.currentThread().getName());
EasyExcelFactory.read(file, TaskZdyVo.class, new TaskZdyExcelListener(clueService, baseExcelVo)).build().readAll();
break;
default:
break;
}
}
} catch (Exception e) {
log.info("=========读取资源错误============{}",e);
taskClient.sendErrMessage("导入资源错误,请检查数据格式后重新导入", clueRecords.get(0).getCreateBy());
throw new BadRequestException("=========读取资源错误============");
}
//动态任务不需要创建任务,更新后结束方法
if (clueRecords.get(0).getUploadType() == FileConstant.FIVE_NUMBER){
Long taskId = clueRecords.get(0).getTaskId();
Integer taskNum = clueMiddleRepository.findTaskNum(taskId);
Task task = new Task();
task.setId(taskId);
task.setTotalNumber(taskNum);
task.setIsDistribution(1);
taskClient.updateTask(task);
return;
}
//创建任务
Long taskId = clueRecords.get(0).getTaskId();
Long userId = clueRecords.get(0).getCreateBy();

Loading…
Cancel
Save