Commit 179344ec authored by 施翔轲's avatar 施翔轲

定时更新项目台账列表解析状态

parent 25e26e46
...@@ -2,12 +2,15 @@ package com.dsk.web.schedule; ...@@ -2,12 +2,15 @@ package com.dsk.web.schedule;
import com.dsk.common.tenant.helper.TenantHelper; import com.dsk.common.tenant.helper.TenantHelper;
import com.dsk.cscec.service.AdvisoryBodyService; import com.dsk.cscec.service.AdvisoryBodyService;
import com.dsk.cscec.service.CbProjectRecordService;
import com.dsk.system.service.ISysTenantService; import com.dsk.system.service.ISysTenantService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/** /**
* 租户相关定时任务类 * 租户相关定时任务类
* *
...@@ -18,9 +21,12 @@ import org.springframework.stereotype.Component; ...@@ -18,9 +21,12 @@ import org.springframework.stereotype.Component;
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j @Slf4j
public class TenantTimerTask { public class TenantTimerTask {
@Resource
private final ISysTenantService tenantService; private ISysTenantService tenantService;
private final AdvisoryBodyService advisoryBodyService; @Resource
private AdvisoryBodyService advisoryBodyService;
@Resource
private CbProjectRecordService projectRecordService;
/** /**
* 每10分钟扫描并禁用已过期租户账号 * 每10分钟扫描并禁用已过期租户账号
...@@ -40,4 +46,12 @@ public class TenantTimerTask { ...@@ -40,4 +46,12 @@ public class TenantTimerTask {
TenantHelper.ignore(advisoryBodyService::updateAdvisoryBodyBusinessScope); TenantHelper.ignore(advisoryBodyService::updateAdvisoryBodyBusinessScope);
} }
/**
* 每2分钟刷新一次项目台账列表内"解析中"项目的状态
*/
@Scheduled(cron = "0 0/2 * * * ?")
public void updateCbProjectRecordParseStatus() {
log.info("每2分钟刷新一次项目台账列表内\"解析中\"项目的状态");
TenantHelper.ignore(projectRecordService::updateCbProjectRecordParseStatus);
}
} }
\ No newline at end of file
...@@ -104,4 +104,9 @@ public interface CbProjectRecordService extends IService<CbProjectRecord> { ...@@ -104,4 +104,9 @@ public interface CbProjectRecordService extends IService<CbProjectRecord> {
* @return 删除结果 * @return 删除结果
*/ */
Integer deleteDraft(Long projectId); Integer deleteDraft(Long projectId);
/**
* 每2分钟刷新一次项目台账列表内"解析中"项目的状态
*/
void updateCbProjectRecordParseStatus();
} }
...@@ -23,6 +23,7 @@ import com.dsk.cscec.domain.vo.CbProjectRecordSearchVo; ...@@ -23,6 +23,7 @@ import com.dsk.cscec.domain.vo.CbProjectRecordSearchVo;
import com.dsk.cscec.mapper.CbProjectFileMapper; import com.dsk.cscec.mapper.CbProjectFileMapper;
import com.dsk.cscec.mapper.CbProjectRecordMapper; import com.dsk.cscec.mapper.CbProjectRecordMapper;
import com.dsk.cscec.service.*; import com.dsk.cscec.service.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -39,6 +40,7 @@ import java.util.stream.Collectors; ...@@ -39,6 +40,7 @@ import java.util.stream.Collectors;
* @since 2024-02-05 11:37:53 * @since 2024-02-05 11:37:53
*/ */
@Service("cbProjectRecordService") @Service("cbProjectRecordService")
@Slf4j
public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMapper, CbProjectRecord> implements CbProjectRecordService { public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMapper, CbProjectRecord> implements CbProjectRecordService {
@Resource @Resource
private CbProjectRecordMapper baseMapper; private CbProjectRecordMapper baseMapper;
...@@ -419,6 +421,41 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe ...@@ -419,6 +421,41 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe
return baseMapper.deleteById(projectRecord); return baseMapper.deleteById(projectRecord);
} }
/**
* 每2分钟刷新一次项目台账列表内"解析中"项目的状态
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void updateCbProjectRecordParseStatus() {
//查询所有解析中的项目
List<CbProjectRecord> projectRecordList = baseMapper.selectList(new LambdaQueryWrapper<CbProjectRecord>()
.eq(CbProjectRecord::getProjectFileStatus, CbProjectConstants.PROJECT_FILE_STATUS_PARSING));
a:
for (CbProjectRecord projectRecord : projectRecordList) {
//查询该项目的所有文件
List<CbProjectFile> projectFileList = projectFileMapper.selectList(new LambdaQueryWrapper<CbProjectFile>()
.eq(CbProjectFile::getProjectId, projectRecord.getId()));
int failNum = 0;
for (CbProjectFile projectFile : projectFileList) {
//如果有一个文件处于解析中,则该项目的解析状态继续保持解析中
if (projectFile.getFileParseStatus().equals(CbProjectConstants.PROJECT_FILE_STATUS_PARSING)) {
continue a;
} else if (projectFile.getFileParseStatus().equals(CbProjectConstants.PROJECT_FILE_STATUS_PARSE_FAIL)) {
failNum++;
}
}
//所有文件遍历完后,如果存在解析失败的文件,则项目的解析状态改为解析失败
if (failNum > 0) {
log.info("项目台账列表:ID为" + projectRecord.getId() + "的项目解析失败");
projectRecord.setProjectFileStatus(CbProjectConstants.PROJECT_FILE_STATUS_PARSE_FAIL);
baseMapper.updateById(projectRecord);
}
}
}
/** /**
* 校验项目是否存在 * 校验项目是否存在
* *
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment