diff --git a/bonus-admin/src/main/java/com/bonus/web/service/enterprise/EnterpriseService.java b/bonus-admin/src/main/java/com/bonus/web/service/enterprise/EnterpriseService.java index 52818a2..e07f5b4 100644 --- a/bonus-admin/src/main/java/com/bonus/web/service/enterprise/EnterpriseService.java +++ b/bonus-admin/src/main/java/com/bonus/web/service/enterprise/EnterpriseService.java @@ -23,6 +23,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Objects; @@ -62,7 +63,28 @@ public class EnterpriseService { * @date 2025/10/22 16:18 */ public List getList(EnterpriseDto dto) { - return imdEnterpriseService.getList(dto); + List list = imdEnterpriseService.getList(dto); + for (EnterpriseVo vo : list) { + ErrorInfo errorQueryDto = createErrorQueryDto(vo); + // 查询异常消息 + List errorList = imdErrorInfoService.getErrorInfoByTable(errorQueryDto); + vo.setErrorInfos(errorList); + } + return list; + } + + /** + * 创建查询条件 + * @param vo + * @return ErrorInfo + * @author cwchen + * @date 2025/11/17 13:27 + */ + public static ErrorInfo createErrorQueryDto(EnterpriseVo vo){ + ErrorInfo errorInfo = new ErrorInfo(); + errorInfo.setSourceTable(TableConstants.TB_ENTERPRISE); + errorInfo.setBusinessId(vo.getEnterpriseId()); + return errorInfo; } /** @@ -94,11 +116,9 @@ public class EnterpriseService { file.setSourceTable(TableConstants.TB_ENTERPRISE); // 来源表 } sourceFileService.saveResourceFile(dto.getFiles()); - // 4.检查身份证是否过期,存在过期则保存至异常信息表 - ErrorInfo errorInfo = CertificateUtil.checkCertificateState(dto.getIdCardStartDate(), CertificateConstants.NATIONAL_EMBLEM_ID_CARD, - dto.getEnterpriseId(), dto.getEnterpriseId(),TableConstants.TB_ENTERPRISE); - if (Objects.nonNull(errorInfo)) { - List errorInfos = Collections.singletonList(errorInfo); + // 4.检查身份证和营业执照是否过期,存在过期则保存至异常信息表 + List errorInfos = checkCertificateStates(dto); + if (CollectionUtils.isNotEmpty(errorInfos)) { imdErrorInfoService.addErrorInfo(errorInfos); } } catch (Exception e) { @@ -145,13 +165,14 @@ public class EnterpriseService { sourceFileService.delResourceFile(dto.getDelFiles(), TableConstants.TB_ENTERPRISE); } // 5.删除异常信息数据 + List errorType = new ArrayList<>(); + errorType.add(CertificateConstants.NATIONAL_EMBLEM_ID_CARD); + errorType.add(CertificateConstants.BUSINESS_LICENSE); imdErrorInfoService.delErrorInfo(dto.getEnterpriseId(), TableConstants.TB_ENTERPRISE, - Collections.singletonList(CertificateConstants.NATIONAL_EMBLEM_ID_CARD)); - // 6.检查身份证是否过期,存在过期则保存至异常信息表 - ErrorInfo errorInfo = CertificateUtil.checkCertificateState(dto.getIdCardStartDate(), CertificateConstants.NATIONAL_EMBLEM_ID_CARD, - dto.getEnterpriseId(), dto.getEnterpriseId(),TableConstants.TB_ENTERPRISE); - if (Objects.nonNull(errorInfo)) { - List errorInfos = Collections.singletonList(errorInfo); + errorType); + // 6.检查身份证和营业执照是否过期,存在过期则保存至异常信息表 + List errorInfos = checkCertificateStates(dto); + if (CollectionUtils.isNotEmpty(errorInfos)) { imdErrorInfoService.addErrorInfo(errorInfos); } } catch (Exception e) { @@ -162,6 +183,27 @@ public class EnterpriseService { return AjaxResult.success(); } + private List checkCertificateStates(EnterpriseDto dto) { + List errorInfos = new ArrayList<>(); + addIfNotNull(errorInfos, + CertificateUtil.checkCertificateState(dto.getIdCardStartDate(), + CertificateConstants.NATIONAL_EMBLEM_ID_CARD, + dto.getEnterpriseId(), dto.getEnterpriseId(), TableConstants.TB_ENTERPRISE)); + + addIfNotNull(errorInfos, + CertificateUtil.checkCertificateState(dto.getBusinessTerm(), + CertificateConstants.BUSINESS_LICENSE, + dto.getEnterpriseId(), dto.getEnterpriseId(), TableConstants.TB_ENTERPRISE)); + + return errorInfos; + } + + private void addIfNotNull(List list, ErrorInfo item) { + if (Objects.nonNull(item)) { + list.add(item); + } + } + /** * 主体库->删除主体库 * diff --git a/bonus-common/src/main/java/com/bonus/common/constant/CertificateConstants.java b/bonus-common/src/main/java/com/bonus/common/constant/CertificateConstants.java index f574b30..c3358df 100644 --- a/bonus-common/src/main/java/com/bonus/common/constant/CertificateConstants.java +++ b/bonus-common/src/main/java/com/bonus/common/constant/CertificateConstants.java @@ -11,4 +11,7 @@ public class CertificateConstants { /**身份证*/ public static final String NATIONAL_EMBLEM_ID_CARD = "national_emblem_id_card"; + + /**营业执照*/ + public static final String BUSINESS_LICENSE = "business_license"; } diff --git a/bonus-common/src/main/java/com/bonus/common/utils/CertificateUtil.java b/bonus-common/src/main/java/com/bonus/common/utils/CertificateUtil.java index 580f864..a795115 100644 --- a/bonus-common/src/main/java/com/bonus/common/utils/CertificateUtil.java +++ b/bonus-common/src/main/java/com/bonus/common/utils/CertificateUtil.java @@ -23,17 +23,18 @@ public class CertificateUtil { static { // 初始化证书类型与错误信息的映射 - CERTIFICATE_ERROR_MAP.put("national_emblem_id_card", "身份证过期"); - CERTIFICATE_ERROR_MAP.put("constructor_certificate", "建造师证书过期"); - CERTIFICATE_ERROR_MAP.put("safety_assessment_certificate_b", "安全考核B证过期"); - CERTIFICATE_ERROR_MAP.put("safety_assessment_certificate_c", "安全考核C证过期"); - CERTIFICATE_ERROR_MAP.put("professional_title_certificate", "质检员证过期"); - CERTIFICATE_ERROR_MAP.put("quality_inspector_certificate", "质检员证过期"); - CERTIFICATE_ERROR_MAP.put("construction_worker_certificate", "施工员证过期"); - CERTIFICATE_ERROR_MAP.put("materials_officer_certificate", "材料员证过期"); - CERTIFICATE_ERROR_MAP.put("document_clerk_certificate", "资料员证过期"); - CERTIFICATE_ERROR_MAP.put("mechanic_s_certificate", "机械员证过期"); - CERTIFICATE_ERROR_MAP.put("cost_engineer_certificate", "造价员证过期"); + CERTIFICATE_ERROR_MAP.put("national_emblem_id_card", "【身份证】已过期"); + CERTIFICATE_ERROR_MAP.put("business_license", "【营业执照】已过期"); + CERTIFICATE_ERROR_MAP.put("constructor_certificate", "【建造师证书】已过期"); + CERTIFICATE_ERROR_MAP.put("safety_assessment_certificate_b", "【安全考核B证】已过期"); + CERTIFICATE_ERROR_MAP.put("safety_assessment_certificate_c", "【安全考核C证】已过期"); + CERTIFICATE_ERROR_MAP.put("professional_title_certificate", "【质检员证】已过期"); + CERTIFICATE_ERROR_MAP.put("quality_inspector_certificate", "【质检员证】已过期"); + CERTIFICATE_ERROR_MAP.put("construction_worker_certificate", "【施工员证】已过期"); + CERTIFICATE_ERROR_MAP.put("materials_officer_certificate", "【材料员证】已过期"); + CERTIFICATE_ERROR_MAP.put("document_clerk_certificate", "【资料员证】已过期"); + CERTIFICATE_ERROR_MAP.put("mechanic_s_certificate", "【机械员证】已过期"); + CERTIFICATE_ERROR_MAP.put("cost_engineer_certificate", "【造价员证】已过期"); } /** @@ -74,8 +75,8 @@ public class CertificateUtil { return true; // 如果日期为空,视为过期 } - // 身份证特殊处理 - if ("national_emblem_id_card".equals(certificateType)) { + // 身份证、营业执照特殊处理 + if ("national_emblem_id_card".equals(certificateType) || "business_license".equals(certificateType)) { return isIdCardExpired(endDate); } diff --git a/bonus-common/src/main/java/com/bonus/common/utils/DateTimeHelper.java b/bonus-common/src/main/java/com/bonus/common/utils/DateTimeHelper.java index f9a1bb6..7c6ceb5 100644 --- a/bonus-common/src/main/java/com/bonus/common/utils/DateTimeHelper.java +++ b/bonus-common/src/main/java/com/bonus/common/utils/DateTimeHelper.java @@ -470,8 +470,8 @@ public class DateTimeHelper { public static void main(String[] args) { // getWeekDataList("2023-08-01"); - - System.err.println(getDayADDorReduce("2023-01-01", -7)); + System.err.println(isExpired("2018.02.14")); +// System.err.println(getDayADDorReduce("2023-01-01", -7)); // System.err.println(getWeekStartOrEndTime("2023-09-01",true)); // System.err.println(getWeekStartOrEndTime("2023-09-01",false)); } @@ -789,24 +789,41 @@ public class DateTimeHelper { * @return true: 已超过当前日期(过期), false: 未超过当前日期 */ public static boolean isExpired(String dateStr) { - return isExpired(dateStr, "yyyy-MM-dd"); + return dateIsExpired(dateStr); } /** * 判断传入日期是否超过当前日期(自定义格式) * @param dateStr 日期字符串 - * @param pattern 日期格式 * @return true: 已超过当前日期(过期), false: 未超过当前日期 */ - public static boolean isExpired(String dateStr, String pattern) { + public static boolean dateIsExpired(String dateStr) { try { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); - LocalDate inputDate = LocalDate.parse(dateStr, formatter); - LocalDate currentDate = LocalDate.now(); - return inputDate.isBefore(currentDate); + // 尝试多种常见日期格式 + String[] patterns = { + "yyyy-MM-dd", + "yyyy.MM.dd", + "yyyy/MM/dd", + "yyyyMMdd" + }; + + for (String pattern : patterns) { + try { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); + LocalDate inputDate = LocalDate.parse(dateStr, formatter); + LocalDate currentDate = LocalDate.now(); + return inputDate.isBefore(currentDate); + } catch (Exception e) { + // 尝试下一种格式 + continue; + } + } + log.error("日期格式无法识别: {}", dateStr); + return false; } catch (Exception e) { - log.error("日期格式错误:{}", dateStr); + log.error("日期解析异常: {}", dateStr); return false; } } + } diff --git a/bonus-mainDatabase/src/main/java/com/bonus/mainDataBase/mapper/IMDErrorInfoMapper.java b/bonus-mainDatabase/src/main/java/com/bonus/mainDataBase/mapper/IMDErrorInfoMapper.java index 0938e25..32acdf8 100644 --- a/bonus-mainDatabase/src/main/java/com/bonus/mainDataBase/mapper/IMDErrorInfoMapper.java +++ b/bonus-mainDatabase/src/main/java/com/bonus/mainDataBase/mapper/IMDErrorInfoMapper.java @@ -56,4 +56,13 @@ public interface IMDErrorInfoMapper { * @date 2025/10/24 12:18 */ void delErrorInfoByBusinessId(List list); + + /** + * 查询异常消息 + * @param errorQueryDto + * @return List + * @author cwchen + * @date 2025/11/17 13:28 + */ + List getErrorInfoByTable(ErrorInfo errorQueryDto); } diff --git a/bonus-mainDatabase/src/main/java/com/bonus/mainDataBase/service/IMDErrorInfoService.java b/bonus-mainDatabase/src/main/java/com/bonus/mainDataBase/service/IMDErrorInfoService.java index 1c8100c..1f7be1b 100644 --- a/bonus-mainDatabase/src/main/java/com/bonus/mainDataBase/service/IMDErrorInfoService.java +++ b/bonus-mainDatabase/src/main/java/com/bonus/mainDataBase/service/IMDErrorInfoService.java @@ -54,4 +54,13 @@ public interface IMDErrorInfoService { * @date 2025/10/24 12:18 */ void delErrorInfoByBusinessId(List errorInfoList); + + /** + * 查询异常消息 + * @param errorQueryDto + * @return List + * @author cwchen + * @date 2025/11/17 13:28 + */ + List getErrorInfoByTable(ErrorInfo errorQueryDto); } diff --git a/bonus-mainDatabase/src/main/java/com/bonus/mainDataBase/service/impl/MDErrorInfoServiceImpl.java b/bonus-mainDatabase/src/main/java/com/bonus/mainDataBase/service/impl/MDErrorInfoServiceImpl.java index eb686df..2e35820 100644 --- a/bonus-mainDatabase/src/main/java/com/bonus/mainDataBase/service/impl/MDErrorInfoServiceImpl.java +++ b/bonus-mainDatabase/src/main/java/com/bonus/mainDataBase/service/impl/MDErrorInfoServiceImpl.java @@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Collections; import java.util.List; /** @@ -43,4 +44,9 @@ public class MDErrorInfoServiceImpl implements IMDErrorInfoService { public void delErrorInfoByBusinessId(List errorInfoList) { imdErrorInfoMapper.delErrorInfoByBusinessId(errorInfoList); } + + @Override + public List getErrorInfoByTable(ErrorInfo errorQueryDto) { + return imdErrorInfoMapper.getErrorInfoByTable(errorQueryDto); + } } diff --git a/bonus-mainDatabase/src/main/resources/mapper/ErrorInfoMapper.xml b/bonus-mainDatabase/src/main/resources/mapper/ErrorInfoMapper.xml index 57e8106..4bd8543 100644 --- a/bonus-mainDatabase/src/main/resources/mapper/ErrorInfoMapper.xml +++ b/bonus-mainDatabase/src/main/resources/mapper/ErrorInfoMapper.xml @@ -58,4 +58,9 @@ AND tb_error_info.business_type = t.business_type ) + + +