接通历史项目导入后端闭环

This commit is contained in:
wkc
2026-03-29 09:56:01 +08:00
parent 46d190aa74
commit d6457491e8
5 changed files with 75 additions and 0 deletions

View File

@@ -16,6 +16,7 @@ import com.ruoyi.ccdi.project.mapper.CcdiProjectMapper;
import com.ruoyi.ccdi.project.service.ICcdiBankTagService;
import com.ruoyi.ccdi.project.service.ICcdiFileUploadService;
import com.ruoyi.ccdi.project.service.ICcdiProjectService;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.lsfx.client.LsfxAnalysisClient;
import com.ruoyi.lsfx.constants.LsfxConstants;
import com.ruoyi.lsfx.domain.request.FetchInnerFlowRequest;
@@ -964,6 +965,9 @@ public class CcdiFileUploadServiceImpl implements ICcdiFileUploadService {
if (record == null) {
throw new RuntimeException("上传记录不存在");
}
if ("HISTORY_IMPORT".equals(record.getSourceType())) {
throw new ServiceException("历史导入文件不支持删除");
}
if (!"parsed_success".equals(record.getFileStatus())) {
if ("deleted".equals(record.getFileStatus())) {
throw new RuntimeException("文件已删除,请勿重复操作");

View File

@@ -2,11 +2,13 @@ package com.ruoyi.ccdi.project.service.impl;
import com.ruoyi.ccdi.project.domain.CcdiProject;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectImportHistoryDTO;
import com.ruoyi.ccdi.project.domain.enums.TriggerType;
import com.ruoyi.ccdi.project.domain.entity.CcdiBankStatement;
import com.ruoyi.ccdi.project.domain.entity.CcdiFileUploadRecord;
import com.ruoyi.ccdi.project.mapper.CcdiBankStatementMapper;
import com.ruoyi.ccdi.project.mapper.CcdiFileUploadRecordMapper;
import com.ruoyi.ccdi.project.mapper.CcdiProjectMapper;
import com.ruoyi.ccdi.project.service.ICcdiBankTagService;
import com.ruoyi.ccdi.project.service.ICcdiProjectHistoryImportService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
@@ -47,6 +49,9 @@ public class CcdiProjectHistoryImportServiceImpl implements ICcdiProjectHistoryI
@Qualifier("fileUploadExecutor")
private Executor fileUploadExecutor;
@Resource
private ICcdiBankTagService bankTagService;
@Override
public void submitImport(Long targetProjectId, Integer targetLsfxProjectId,
CcdiProjectImportHistoryDTO dto, String operator) {
@@ -97,6 +102,10 @@ public class CcdiProjectHistoryImportServiceImpl implements ICcdiProjectHistoryI
if (!recordsToInsert.isEmpty()) {
recordMapper.insertBatch(recordsToInsert);
}
if (!statementsToInsert.isEmpty()) {
refreshProjectTargetCount(targetProjectId);
bankTagService.submitAutoRebuild(targetProjectId, TriggerType.AUTO_BATCH_UPLOAD);
}
}
private CcdiBankStatement copyStatement(CcdiBankStatement sourceStatement, Long targetProjectId,
@@ -136,6 +145,17 @@ public class CcdiProjectHistoryImportServiceImpl implements ICcdiProjectHistoryI
return sourceProject == null ? null : sourceProject.getProjectName();
}
private void refreshProjectTargetCount(Long targetProjectId) {
CcdiProject targetProject = projectMapper.selectById(targetProjectId);
if (targetProject == null) {
log.warn("【项目历史导入】刷新目标人数时项目不存在: projectId={}", targetProjectId);
return;
}
int targetCount = bankStatementMapper.countMatchedStaffCountByProjectId(targetProjectId);
targetProject.setTargetCount(targetCount);
projectMapper.updateById(targetProject);
}
private void normalizeDedupFields(CcdiBankStatement statement) {
statement.setLeAccountNo(trimToNull(statement.getLeAccountNo()));
}