逻辑优化

This commit is contained in:
cwchen 2025-11-17 09:08:27 +08:00
parent 7a3701de92
commit 9455bf7cbe
19 changed files with 199 additions and 16 deletions

View File

@ -96,7 +96,7 @@ public class EnterpriseService {
sourceFileService.saveResourceFile(dto.getFiles());
// 4.检查身份证是否过期,存在过期则保存至异常信息表
ErrorInfo errorInfo = CertificateUtil.checkCertificateState(dto.getIdCardStartDate(), CertificateConstants.NATIONAL_EMBLEM_ID_CARD,
dto.getEnterpriseId(), dto.getEnterpriseId());
dto.getEnterpriseId(), dto.getEnterpriseId(),TableConstants.TB_ENTERPRISE);
if (Objects.nonNull(errorInfo)) {
List<ErrorInfo> errorInfos = Collections.singletonList(errorInfo);
imdErrorInfoService.addErrorInfo(errorInfos);
@ -149,7 +149,7 @@ public class EnterpriseService {
Collections.singletonList(CertificateConstants.NATIONAL_EMBLEM_ID_CARD));
// 6.检查身份证是否过期,存在过期则保存至异常信息表
ErrorInfo errorInfo = CertificateUtil.checkCertificateState(dto.getIdCardStartDate(), CertificateConstants.NATIONAL_EMBLEM_ID_CARD,
dto.getEnterpriseId(), dto.getEnterpriseId());
dto.getEnterpriseId(), dto.getEnterpriseId(),TableConstants.TB_ENTERPRISE);
if (Objects.nonNull(errorInfo)) {
List<ErrorInfo> errorInfos = Collections.singletonList(errorInfo);
imdErrorInfoService.addErrorInfo(errorInfos);

View File

@ -118,7 +118,8 @@ public class PersonnelService {
ErrorInfo errorInfo = CertificateUtil.checkCertificateState(item.getPersonnelCertificate().getCertificateValidityPeriod(),
item.getPersonnelCertificate().getCertificateType(),
item.getPersonnelCertificate().getPersonnelCertificateId(),
dto.getEnterpriseId());
dto.getEnterpriseId(),
TableConstants.TB_ENTERPRISE_PERSONNEL);
if (Objects.nonNull(errorInfo)) {
errorInfos.add(errorInfo);
}
@ -215,7 +216,8 @@ public class PersonnelService {
ErrorInfo errorInfo = CertificateUtil.checkCertificateState(item.getPersonnelCertificate().getCertificateValidityPeriod(),
item.getPersonnelCertificate().getCertificateType(),
item.getPersonnelCertificate().getPersonnelCertificateId(),
dto.getEnterpriseId());
dto.getEnterpriseId(),
TableConstants.TB_ENTERPRISE_PERSONNEL);
if (Objects.nonNull(errorInfo)) {
errorInfos.add(errorInfo);
}

View File

@ -110,7 +110,8 @@ public class QualificationService {
endDateStr,
dto.getQualificationType(),
dto.getQualificationId(),
dto.getEnterpriseId()
dto.getEnterpriseId(),
TableConstants.TB_ENTERPRISE_QUALIFICATION
);
if (Objects.nonNull(errorInfo)) {
List<ErrorInfo> errorInfos = new ArrayList<>();
@ -179,7 +180,8 @@ public class QualificationService {
endDateStr,
dto.getQualificationType(),
dto.getQualificationId(),
dto.getEnterpriseId()
dto.getEnterpriseId(),
TableConstants.TB_ENTERPRISE_QUALIFICATION
);
if (Objects.nonNull(newErrorInfo)) {
List<ErrorInfo> newErrorInfos = new ArrayList<>();

View File

@ -5,6 +5,7 @@ import com.bonus.common.constant.Constants;
import com.bonus.common.constant.TableConstants;
import com.bonus.common.core.domain.AjaxResult;
import com.bonus.common.domain.file.po.ResourceFilePo;
import com.bonus.common.domain.file.po.ResourceFileRecordPo;
import com.bonus.common.domain.file.vo.ResourceFileVo;
import com.bonus.common.domain.mainDatabase.dto.TechnicalDto;
import com.bonus.common.domain.mainDatabase.dto.ToolDto;
@ -16,6 +17,7 @@ import com.bonus.common.enums.ErrorMessageEnum;
import com.bonus.common.utils.ValidatorsUtils;
import com.bonus.file.service.FileUploadService;
import com.bonus.file.service.SourceFileService;
import com.bonus.framework.manager.AsyncManager;
import com.bonus.mainDataBase.service.IMDToolService;
import com.bonus.web.util.ImportExcelUtils;
import com.bonus.web.validateService.ToolValidateService;
@ -238,14 +240,21 @@ public class ToolService {
imdToolService.batchImportData(dto, toolList);
// 5.添加文件
List<ResourceFilePo> files = new ArrayList<>();
List<ResourceFileRecordPo> resourceFileRecordPos = new ArrayList<>();
for (ToolDto toolDto : toolList) {
for (ResourceFilePo po : toolDto.getFiles()) {
ResourceFileRecordPo recordPo = new ResourceFileRecordPo();
po.setBusinessId(toolDto.getToolId()); // 业务id
po.setSourceTable(TableConstants.TB_ENTERPRISE_TOOL); // 来源表
recordPo.setFilePath(po.getFilePath());
files.add(po);
}
}
sourceFileService.saveResourceFile(files);
// 6.保存系统资源存储记录
if(CollectionUtils.isNotEmpty(resourceFileRecordPos)) {
AsyncManager.me().executeSaveResourceFilesModule(resourceFileRecordPos);
}
} catch (Exception e) {
log.error(e.toString(), e);
return AjaxResult.error(e.getMessage());
@ -323,4 +332,5 @@ public class ToolService {
return sb.toString();
}
}

View File

@ -66,4 +66,9 @@ public class PersonnelCertificate {
*/
private String professionalName;
/**
* 企业id
* */
private Long enterpriseId;
}

View File

@ -53,7 +53,7 @@ public class CertificateUtil {
* @date 2025/10/23 10:02
*/
public static ErrorInfo checkCertificateState(String endDate, String certificateType,
Long businessId, Long enterpriseId) {
Long businessId, Long enterpriseId,String sourceTable) {
// 检查证书是否过期
boolean isExpired = isCertificateExpired(endDate, certificateType);
@ -62,7 +62,7 @@ public class CertificateUtil {
}
// 构建错误信息
return buildErrorInfo(businessId, enterpriseId, certificateType);
return buildErrorInfo(businessId, enterpriseId, certificateType,sourceTable);
}
/**
@ -128,7 +128,7 @@ public class CertificateUtil {
/**
* 构建错误信息对象
*/
private static ErrorInfo buildErrorInfo(Long businessId, Long enterpriseId, String certificateType) {
private static ErrorInfo buildErrorInfo(Long businessId, Long enterpriseId, String certificateType,String sourceTable) {
String errorContent = CERTIFICATE_ERROR_MAP.getOrDefault(certificateType, "证书过期");
ErrorInfo errorInfo = new ErrorInfo();
@ -137,6 +137,8 @@ public class CertificateUtil {
errorInfo.setEnterpriseId(enterpriseId);
errorInfo.setErrorTime(new Date());
errorInfo.setErrorContent(errorContent);
errorInfo.setBusinessType(certificateType);
errorInfo.setSourceTable(sourceTable);
return errorInfo;
}

View File

@ -85,4 +85,12 @@ public interface ISourceFileMapper {
* @date 2025/11/14 15:26
*/
void addResourceFileRecord(List<ResourceFileRecordPo> list);
/**
* 查询需要删除的文件
* @return List<ResourceFileRecordPo>
* @author cwchen
* @date 2025/11/14 18:11
*/
List<ResourceFileRecordPo> getDelFiles();
}

View File

@ -121,4 +121,19 @@ public class SourceFileService {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
}
/**
* 查询需要删除的文件
* @return List<ResourceFileRecordPo>
* @author cwchen
* @date 2025/11/14 16:17
*/
public List<ResourceFileRecordPo> getDelFiles() {
try {
return Optional.ofNullable(mapper.getDelFiles()).orElse(new ArrayList<>());
} catch (Exception e) {
log.error(e.toString(),e);
return null;
}
}
}

View File

@ -109,4 +109,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
)
</foreach>
</insert>
<!--查询需要删除的文件-->
<select id="getDelFiles" resultType="com.bonus.common.domain.file.po.ResourceFileRecordPo">
SELECT file_path AS filePath FROM sys_resource_file WHERE DATE(create_time) = CURRENT_DATE AND del_flag = '1'
UNION ALL
SELECT srfr.file_path AS filePath
FROM sys_resource_file_record srfr
LEFT JOIN sys_resource_file srf ON srfr.file_path = srf.file_path AND DATE(create_time) = CURRENT_DATE AND srf.del_flag = '0'
WHERE srfr.create_date = CURRENT_DATE AND srf.file_path IS NULL
</select>
</mapper>

View File

@ -113,6 +113,24 @@ public class AsyncManager
return execute(callable);
}
/**
* 批量执行保存系统资源文件的异步任务
* @param list
* @return Future<Map<String,String>>
* @author cwchen
* @date 2025/11/14 15:35
*/
public Future<Void> executeSaveResourceFilesModule(List<ResourceFileRecordPo> list) {
Callable<Void> callable = new Callable<Void>() {
@Override
public Void call() throws Exception {
SpringUtils.getBean(SourceFileService.class).addResourceFileRecord(list);
return null; // 必须返回 null
}
};
return execute(callable);
}
/**
* 停止任务线程池
*/

View File

@ -1,6 +1,7 @@
package com.bonus.mainDataBase.mapper;
import com.bonus.common.domain.mainDatabase.dto.EnterpriseDto;
import com.bonus.common.domain.mainDatabase.po.ErrorInfo;
import com.bonus.common.domain.mainDatabase.vo.EnterpriseVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@ -70,4 +71,12 @@ public interface IMDEnterpriseMapper {
* @date 2025/10/23 14:08
*/
int isRepeat(EnterpriseDto dto);
/**
* 查询主体库过期证件
* @return List<ErrorInfo>
* @author cwchen
* @date 2025/11/16 20:30
*/
List<EnterpriseVo.EnterpriseDetailVo> queryExpiredCertificate();
}

View File

@ -3,6 +3,7 @@ package com.bonus.mainDataBase.mapper;
import com.bonus.common.domain.mainDatabase.dto.EnterpriseDto;
import com.bonus.common.domain.mainDatabase.dto.EnterprisePersonnelDto;
import com.bonus.common.domain.mainDatabase.po.EnterprisePersonnel;
import com.bonus.common.domain.mainDatabase.po.PersonnelCertificate;
import com.bonus.common.domain.mainDatabase.vo.EnterprisePersonnelVo;
import com.bonus.common.domain.mainDatabase.vo.EnterpriseVo;
import org.apache.ibatis.annotations.Param;
@ -66,4 +67,12 @@ public interface IMDPersonnelMapper {
* @date 2025/10/24 13:27
*/
EnterprisePersonnel getPersonnelData(EnterprisePersonnelDto dto);
/**
* 查询证件有效期
* @return List<PersonnelCertificate>
* @author cwchen
* @date 2025/11/16 20:56
*/
List<PersonnelCertificate> queryExpiredCertificate();
}

View File

@ -1,6 +1,7 @@
package com.bonus.mainDataBase.service;
import com.bonus.common.domain.mainDatabase.dto.EnterpriseDto;
import com.bonus.common.domain.mainDatabase.po.ErrorInfo;
import com.bonus.common.domain.mainDatabase.vo.EnterpriseVo;
import java.util.List;
@ -58,4 +59,12 @@ public interface IMDEnterpriseService {
* @date 2025/10/23 14:07
*/
int isRepeat(EnterpriseDto dto);
/**
* 查询主体库过期证件
* @return List<ErrorInfo>
* @author cwchen
* @date 2025/11/16 20:29
*/
List<ErrorInfo> queryExpiredCertificate();
}

View File

@ -2,6 +2,7 @@ package com.bonus.mainDataBase.service;
import com.bonus.common.domain.mainDatabase.dto.EnterprisePersonnelDto;
import com.bonus.common.domain.mainDatabase.po.EnterprisePersonnel;
import com.bonus.common.domain.mainDatabase.po.ErrorInfo;
import com.bonus.common.domain.mainDatabase.vo.EnterprisePersonnelVo;
import java.util.List;
@ -60,4 +61,12 @@ public interface IMDPersonnelService {
* @date 2025/10/24 13:26
*/
EnterprisePersonnel getPersonnelData(EnterprisePersonnelDto dto);
/**
* 查询人员库过期证件
* @return List<ErrorInfo>
* @author cwchen
* @date 2025/11/16 20:42
*/
List<ErrorInfo> queryExpiredCertificate();
}

View File

@ -1,16 +1,19 @@
package com.bonus.mainDataBase.service.impl;
import com.bonus.common.constant.CertificateConstants;
import com.bonus.common.constant.TableConstants;
import com.bonus.common.domain.mainDatabase.dto.EnterpriseDto;
import com.bonus.common.domain.mainDatabase.po.ErrorInfo;
import com.bonus.common.domain.mainDatabase.vo.EnterpriseVo;
import com.bonus.common.utils.CertificateUtil;
import com.bonus.mainDataBase.mapper.IMDEnterpriseMapper;
import com.bonus.mainDataBase.service.IMDEnterpriseService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.*;
/**
* @className:MDEnterpriseServiceImpl
@ -73,4 +76,25 @@ public class MDEnterpriseServiceImpl implements IMDEnterpriseService {
return 0;
}
}
@Override
public List<ErrorInfo> queryExpiredCertificate() {
try {
List <ErrorInfo> errorInfos = new ArrayList<>();
List<EnterpriseVo.EnterpriseDetailVo> list = Optional.ofNullable(imdEnterpriseMapper.queryExpiredCertificate()).orElse(new ArrayList<>());
if(CollectionUtils.isNotEmpty(list)){
for (EnterpriseVo.EnterpriseDetailVo vo : list) {
ErrorInfo errorInfo = CertificateUtil.checkCertificateState(vo.getIdCardStartDate(), CertificateConstants.NATIONAL_EMBLEM_ID_CARD,
vo.getEnterpriseId(), vo.getEnterpriseId(), TableConstants.TB_ENTERPRISE);
if(Objects.nonNull(errorInfo)){
errorInfos.add(errorInfo);
}
}
}
return errorInfos;
} catch (Exception e) {
log.error(e.toString(), e);
return null;
}
}
}

View File

@ -1,19 +1,22 @@
package com.bonus.mainDataBase.service.impl;
import com.bonus.common.constant.CertificateConstants;
import com.bonus.common.constant.TableConstants;
import com.bonus.common.domain.mainDatabase.dto.EnterprisePersonnelDto;
import com.bonus.common.domain.mainDatabase.po.EnterprisePersonnel;
import com.bonus.common.domain.mainDatabase.po.ErrorInfo;
import com.bonus.common.domain.mainDatabase.po.PersonnelCertificate;
import com.bonus.common.domain.mainDatabase.vo.EnterprisePersonnelVo;
import com.bonus.common.domain.mainDatabase.vo.EnterpriseVo;
import com.bonus.common.utils.CertificateUtil;
import com.bonus.mainDataBase.mapper.IMDPersonnelMapper;
import com.bonus.mainDataBase.service.IMDPersonnelService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.*;
/**
* @className:MDPersonnelServiceImpl
@ -74,4 +77,25 @@ public class MDPersonnelServiceImpl implements IMDPersonnelService {
return new EnterprisePersonnel();
}
}
@Override
public List<ErrorInfo> queryExpiredCertificate() {
try {
List <ErrorInfo> errorInfos = new ArrayList<>();
List<PersonnelCertificate> list = Optional.ofNullable(imdPersonnelMapper.queryExpiredCertificate()).orElse(new ArrayList<>());
if(CollectionUtils.isNotEmpty(list)){
for (PersonnelCertificate vo : list) {
ErrorInfo errorInfo = CertificateUtil.checkCertificateState(vo.getCertificateValidityPeriod(), vo.getCertificateType(),
vo.getPersonnelCertificateId(), vo.getEnterpriseId(), TableConstants.TB_PERSONNEL_CERTIFICATE);
if(Objects.nonNull(errorInfo)){
errorInfos.add(errorInfo);
}
}
}
return errorInfos;
} catch (Exception e) {
log.error(e.toString(), e);
return null;
}
}
}

View File

@ -143,4 +143,12 @@
UPDATE tb_enterprise SET del_flag = '1' WHERE enterprise_id = #{params.enterpriseId}
</if>
</insert>
<!--查询主体库过期证件-->
<select id="queryExpiredCertificate" resultType="com.bonus.common.domain.mainDatabase.vo.EnterpriseVo$EnterpriseDetailVo">
SELECT enterprise_id AS enterpriseId,
id_card_start_date AS idCardStartDate
FROM tb_enterprise
WHERE del_flag = '0'
</select>
</mapper>

View File

@ -119,4 +119,15 @@
FROM tb_enterprise_personnel
WHERE personnel_id = #{personnelId}
</select>
<!--查询证件有效期-->
<select id="queryExpiredCertificate" resultType="com.bonus.common.domain.mainDatabase.po.PersonnelCertificate">
SELECT tpc.personnel_certificate_id AS personnelCertificateId,
tpc.certificate_validity_period AS certificateValidityPeriod,
tpc.certificate_type AS certificateType,
tep.enterprise_id AS enterpriseId
FROM tb_personnel_certificate tpc
LEFT JOIN tb_enterprise_personnel tep ON tpc.personnel_id = tep.personnel_id
WHERE tpc.del_flag = '0' AND tep.del_flag = '0'
</select>
</mapper>

View File

@ -34,6 +34,14 @@
<groupId>com.bonus</groupId>
<artifactId>bonus-common</artifactId>
</dependency>
<dependency>
<groupId>com.bonus</groupId>
<artifactId>bonus-file</artifactId>
</dependency>
<dependency>
<groupId>com.bonus</groupId>
<artifactId>bonus-mainDatabase</artifactId>
</dependency>
</dependencies>