fix: 优化轮询逻辑

This commit is contained in:
tangwei 2026-05-07 16:10:11 +08:00
parent b8d401f662
commit f7eb3a8ab7
5 changed files with 23 additions and 50 deletions

View File

@ -702,28 +702,13 @@ public class FishDraftDataController {
return ResponseResult.successData(result); return ResponseResult.successData(result);
} }
int totalCount = currentTask.getTotalCount() != null ? currentTask.getTotalCount() : 0;
int successCount = currentTask.getSuccessCount() != null ? currentTask.getSuccessCount() : 0;
int failCount = currentTask.getFailCount() != null ? currentTask.getFailCount() : 0;
int progressPercent = totalCount > 0 ? (int) ((successCount + failCount) * 100.0 / totalCount) : 0;
String statusText = getStatusText(currentTask.getStatus()); String statusText = getStatusText(currentTask.getStatus());
boolean canImport = isTaskComplete(currentTask.getStatus()); boolean canImport = isTaskComplete(currentTask.getStatus());
Map<String, Object> taskInfo = new HashMap<>(); Map<String, Object> taskInfo = new HashMap<>();
taskInfo.put("id", currentTask.getId()); taskInfo.put("id", currentTask.getId());
taskInfo.put("importNo", currentTask.getImportNo());
taskInfo.put("fileName", currentTask.getFileName());
taskInfo.put("fileSize", currentTask.getFileSize());
taskInfo.put("status", currentTask.getStatus()); taskInfo.put("status", currentTask.getStatus());
taskInfo.put("statusText", statusText); taskInfo.put("statusText", statusText);
taskInfo.put("totalCount", totalCount);
taskInfo.put("successCount", successCount);
taskInfo.put("failCount", failCount);
taskInfo.put("progressPercent", progressPercent);
taskInfo.put("errorMsg", currentTask.getErrorMsg() != null ? currentTask.getErrorMsg() : "");
taskInfo.put("uploadTime", currentTask.getUploadTime());
result.put("hasImportingTask", true); result.put("hasImportingTask", true);
result.put("canImport", canImport); result.put("canImport", canImport);
result.put("currentTask", taskInfo); result.put("currentTask", taskInfo);

View File

@ -38,15 +38,16 @@ public interface ImportTaskMapper extends BaseMapper<ImportTask> {
@Select("SELECT * FROM IMPORT_TASK WHERE UPLOAD_USER_ID = #{uploadUserId} ORDER BY CREATED_AT DESC") @Select("SELECT * FROM IMPORT_TASK WHERE UPLOAD_USER_ID = #{uploadUserId} ORDER BY CREATED_AT DESC")
List<ImportTask> selectByUploadUserId(@Param("uploadUserId") String uploadUserId); List<ImportTask> selectByUploadUserId(@Param("uploadUserId") String uploadUserId);
@Select("<script>" + @Select("SELECT * FROM (" +
"SELECT * FROM IMPORT_TASK WHERE UPLOAD_USER_ID = #{uploadUserId} AND STATUS IN " + "SELECT ID, IMPORT_NO, BIZ_TYPE, FILE_NAME, FILE_SIZE, FILE_PATH, TEMP_DIR, " +
"<foreach item='status' collection='statuses' open='(' separator=',' close=')'>" + "TOTAL_COUNT, SUCCESS_COUNT, FAIL_COUNT, STATUS, ERROR_MSG, " +
"#{status}" + "UPLOAD_USER_ID, UPLOAD_TIME, EXPIRE_TIME, CREATED_AT, UPDATED_AT " +
"</foreach>" + "FROM IMPORT_TASK " +
"WHERE UPLOAD_USER_ID = #{uploadUserId} " +
"AND STATUS IN ('UPLOADED', 'PARSING', 'VALIDATED') " +
"ORDER BY CREATED_AT DESC" + "ORDER BY CREATED_AT DESC" +
"</script>") ") WHERE ROWNUM = 1")
List<ImportTask> selectByUserIdAndStatuses(@Param("uploadUserId") String uploadUserId, List<ImportTask> selectByUserIdAndStatuses(@Param("uploadUserId") String uploadUserId);
@Param("statuses") List<String> statuses);
/** /**
* 查询过期的任务 * 查询过期的任务

View File

@ -218,14 +218,14 @@ public class FishImportServiceImpl implements IFishImportService {
} }
} }
Set<String> allStcdSet = new HashSet<>(); // Set<String> allStcdSet = new HashSet<>();
if (!allowedHbrvcdSet.isEmpty() || !directStcdSet.isEmpty()) { if (!allowedHbrvcdSet.isEmpty() || !directStcdSet.isEmpty()) {
if (!allowedHbrvcdSet.isEmpty()) { if (!allowedHbrvcdSet.isEmpty()) {
List<SdEngInfoBH> stationsFromHbrv = engInfoBHMapper.selectByHbrvcdList(new ArrayList<>(allowedHbrvcdSet)); List<SdEngInfoBH> stationsFromHbrv = engInfoBHMapper.selectByHbrvcdList(new ArrayList<>(allowedHbrvcdSet));
for (SdEngInfoBH station : stationsFromHbrv) { for (SdEngInfoBH station : stationsFromHbrv) {
if (station.getStcd() != null) { if (station.getStcd() != null) {
allStcdSet.add(station.getStcd()); directStcdSet.add(station.getStcd());
} }
} }
} }
@ -234,7 +234,7 @@ public class FishImportServiceImpl implements IFishImportService {
List<SdEngInfoBH> stationsFromStcd = engInfoBHMapper.selectBatchIds(new ArrayList<>(directStcdSet)); List<SdEngInfoBH> stationsFromStcd = engInfoBHMapper.selectBatchIds(new ArrayList<>(directStcdSet));
for (SdEngInfoBH station : stationsFromStcd) { for (SdEngInfoBH station : stationsFromStcd) {
if (station.getStcd() != null) { if (station.getStcd() != null) {
allStcdSet.add(station.getStcd()); directStcdSet.add(station.getStcd());
} }
if (station.getHbrvcd() != null) { if (station.getHbrvcd() != null) {
allowedHbrvcdSet.add(station.getHbrvcd()); allowedHbrvcdSet.add(station.getHbrvcd());
@ -243,7 +243,7 @@ public class FishImportServiceImpl implements IFishImportService {
} }
} }
if (!directStcdSet.isEmpty()) { if (!directStcdSet.isEmpty()) {
List<SdFpssBH> sdFpssBHS = fpssBHMapper.selectList(new LambdaQueryWrapper<SdFpssBH>().in(SdFpssBH::getRstcd, allStcdSet).select(SdFpssBH::getStcd)); List<SdFpssBH> sdFpssBHS = fpssBHMapper.selectList(new LambdaQueryWrapper<SdFpssBH>().in(SdFpssBH::getRstcd, directStcdSet).select(SdFpssBH::getStcd));
for (SdFpssBH sdFpssBH : sdFpssBHS) { for (SdFpssBH sdFpssBH : sdFpssBHS) {
if (sdFpssBH.getStcd() != null) { if (sdFpssBH.getStcd() != null) {
directBHSet.add(sdFpssBH.getStcd()); directBHSet.add(sdFpssBH.getStcd());
@ -268,7 +268,7 @@ public class FishImportServiceImpl implements IFishImportService {
importRow.getWarnings().add("rstcd"); importRow.getWarnings().add("rstcd");
data.setEnnm(cellValue.trim()); data.setEnnm(cellValue.trim());
} else { } else {
if (allStcdSet.contains(stcd)) { if (directStcdSet.contains(stcd)) {
data.setEnnm(cellValue.trim()); data.setEnnm(cellValue.trim());
data.setRstcd(stcd); data.setRstcd(stcd);
} else { } else {

View File

@ -12,12 +12,14 @@ import com.yfd.platform.data.mapper.ImportTaskMapper;
import com.yfd.platform.data.service.AttachmentUploadService; import com.yfd.platform.data.service.AttachmentUploadService;
import com.yfd.platform.data.service.IImportTaskService; import com.yfd.platform.data.service.IImportTaskService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.CompletableFuture;
/** /**
* <p> * <p>
@ -166,8 +168,8 @@ public class ImportTaskServiceImpl extends ServiceImpl<ImportTaskMapper, ImportT
@Override @Override
public boolean hasImportingTask(String uploadUserId) { public boolean hasImportingTask(String uploadUserId) {
List<String> activeStatuses = List.of("UPLOADED", "PARSING", "VALIDATING"); // List<String> activeStatuses = List.of("UPLOADED", "PARSING", "VALIDATING");
List<ImportTask> tasks = importTaskMapper.selectByUserIdAndStatuses(uploadUserId, activeStatuses); List<ImportTask> tasks = importTaskMapper.selectByUserIdAndStatuses(uploadUserId);
return tasks != null && !tasks.isEmpty(); return tasks != null && !tasks.isEmpty();
} }
@ -185,21 +187,6 @@ public class ImportTaskServiceImpl extends ServiceImpl<ImportTaskMapper, ImportT
if (importTask.getResultJson() != null && !importTask.getResultJson().isEmpty()) { if (importTask.getResultJson() != null && !importTask.getResultJson().isEmpty()) {
try { try {
FishImportResult importResult = objectMapper.readValue(importTask.getResultJson(), FishImportResult.class); FishImportResult importResult = objectMapper.readValue(importTask.getResultJson(), FishImportResult.class);
// for (FishImportResult.FishImportRow successRow : importResult.getRows()) {
// if (successRow.getData()==null) {
// continue;
// }
// String vdpth = successRow.getData().getVdpth();
// if (StringUtils.hasText(vdpth)) {
// List<String> fileIds = StrUtil.split(vdpth, ",");
// fileIds.forEach(fileId -> attachmentUploadService.deleteFile(fileId));
// }
// String picpth = successRow.getData().getPicpth();
// if (StringUtils.hasText(picpth)) {
// List<String> fileIds = StrUtil.split(vdpth, ",");
// fileIds.forEach(fileId -> attachmentUploadService.deleteFile(fileId));
// }
// }
String tempDir = importResult.getTempDir(); String tempDir = importResult.getTempDir();
// del 方法会递归删除目录及其所有内容 // del 方法会递归删除目录及其所有内容
FileUtil.del(tempDir); FileUtil.del(tempDir);
@ -216,8 +203,8 @@ public class ImportTaskServiceImpl extends ServiceImpl<ImportTaskMapper, ImportT
@Override @Override
public ImportTask getCurrentTaskByUserId(String uploadUserId) { public ImportTask getCurrentTaskByUserId(String uploadUserId) {
List<String> activeStatuses = List.of("UPLOADED", "PARSING", "VALIDATED"); // List<String> activeStatuses = List.of("UPLOADED", "PARSING", "VALIDATED");
List<ImportTask> tasks = importTaskMapper.selectByUserIdAndStatuses(uploadUserId, activeStatuses); List<ImportTask> tasks = importTaskMapper.selectByUserIdAndStatuses(uploadUserId);
if (tasks == null || tasks.isEmpty()) { if (tasks == null || tasks.isEmpty()) {
return null; return null;
} }

View File

@ -10,12 +10,12 @@ spring:
druid: druid:
master: master:
driverClassName: oracle.jdbc.OracleDriver driverClassName: oracle.jdbc.OracleDriver
url: "${DB_MASTER_URL:jdbc:oracle:thin:@172.16.31.190:1521/SDLYZ}" url: "${DB_MASTER_URL:jdbc:oracle:thin:@172.16.21.134:1521/SDLYZ}"
username: "${DB_MASTER_USERNAME:QGC_REFA}" username: "${DB_MASTER_USERNAME:QGC_REFA}"
password: "${DB_MASTER_PASSWORD:Y4M4K1oCkL8U}" password: "${DB_MASTER_PASSWORD:Y4M4K1oCkL8U}"
slave: slave:
driverClassName: oracle.jdbc.OracleDriver driverClassName: oracle.jdbc.OracleDriver
url: "${DB_SLAVE_URL:jdbc:oracle:thin:@172.16.31.190:1521/SDLYZ}" url: "${DB_SLAVE_URL:jdbc:oracle:thin:@172.16.21.134:1521/SDLYZ}"
username: "${DB_SLAVE_USERNAME:QGC_REFA}" username: "${DB_SLAVE_USERNAME:QGC_REFA}"
password: "${DB_SLAVE_PASSWORD:Y4M4K1oCkL8U}" password: "${DB_SLAVE_PASSWORD:Y4M4K1oCkL8U}"