From 42c32bdf16f0ca84af32edd164a448023700196d Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Mon, 27 Oct 2025 09:07:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/enterprise/PersonnelService.java | 18 +++++++------ .../mainDatabase/dto/EnterpriseDto.java | 9 +++---- .../dto/EnterprisePersonnelDto.java | 17 ++++++------ .../mainDatabase/po/EnterprisePersonnel.java | 5 ++++ .../bonus/common/utils/CertificateUtil.java | 26 +++++++++++++++++-- .../java/com/bonus/file/util/FileUtil.java | 2 +- .../interceptor/XssRequestWrapper.java | 2 +- .../service/impl/MDEnterpriseServiceImpl.java | 4 +-- .../resources/mapper/CertificateMapper.xml | 10 ++++++- .../resources/mapper/EnterpriseMapper.xml | 8 +++--- .../main/resources/mapper/ErrorInfoMapper.xml | 2 +- .../main/resources/mapper/PersonnelMapper.xml | 4 +-- .../com/bonus/ocr/service/OcrService.java | 6 ++--- 13 files changed, 75 insertions(+), 38 deletions(-) diff --git a/bonus-admin/src/main/java/com/bonus/web/service/enterprise/PersonnelService.java b/bonus-admin/src/main/java/com/bonus/web/service/enterprise/PersonnelService.java index 43fbae9..448b958 100644 --- a/bonus-admin/src/main/java/com/bonus/web/service/enterprise/PersonnelService.java +++ b/bonus-admin/src/main/java/com/bonus/web/service/enterprise/PersonnelService.java @@ -1,6 +1,5 @@ package com.bonus.web.service.enterprise; -import com.bonus.common.constant.CertificateConstants; import com.bonus.common.constant.TableConstants; import com.bonus.common.core.domain.AjaxResult; import com.bonus.common.domain.file.po.ResourceFilePo; @@ -11,7 +10,6 @@ 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.common.utils.ValidatorsUtils; import com.bonus.file.service.FileUploadService; @@ -28,7 +26,6 @@ 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; @@ -190,7 +187,7 @@ public class PersonnelService { List delFiles = new ArrayList<>(); for (PersonnelCertificate item : changeList) { // 添加需要删除的资源文件 - ResourceFilePo delResourceFilePo = setResourceFile(item); + ResourceFilePo delResourceFilePo = setResourceFile(item,TableConstants.TB_PERSONNEL_CERTIFICATE); delFiles.add(delResourceFilePo); // 添加需要删除的异常信息 ErrorInfo delErrorInfo = setErrorInfo(item); @@ -223,6 +220,11 @@ public class PersonnelService { errorInfos.add(errorInfo); } } + + // 如果存在证书删除的文件 则删除系统资源文件 + if (CollectionUtils.isNotEmpty(dto.getDelCertificateFiles())) { + sourceFileService.delResourceFile(dto.getDelCertificateFiles(), TableConstants.TB_PERSONNEL_CERTIFICATE); + } // 添加证书资源文件 if(CollectionUtils.isNotEmpty(certificateList)){ sourceFileService.saveResourceFile(certificateList); @@ -274,7 +276,7 @@ public class PersonnelService { if(CollectionUtils.isNotEmpty(certificateList)){ for (PersonnelCertificate item : certificateList) { // 添加需要删除的资源文件 - ResourceFilePo delResourceFilePo = setResourceFile(item); + ResourceFilePo delResourceFilePo = setResourceFile(item,TableConstants.TB_PERSONNEL_CERTIFICATE); delFiles.add(delResourceFilePo); // 添加需要删除的异常信息 ErrorInfo delErrorInfo = setErrorInfo(item); @@ -324,7 +326,7 @@ public class PersonnelService { for (PersonnelCertificate item : certificateList) { EnterprisePersonnelVo.CertificateDetailVo vo = new EnterprisePersonnelVo.CertificateDetailVo(); vo.setCertificate(item); - List filesByTable = sourceFileService.getFilesByTable(item.getPersonnelCertificateId(), TableConstants.TB_ENTERPRISE_PERSONNEL); + List filesByTable = sourceFileService.getFilesByTable(item.getPersonnelCertificateId(), TableConstants.TB_PERSONNEL_CERTIFICATE); // 取minio中的文件访问路径 List fileVos = setFile(filesByTable); vo.setFileVoList(fileVos); @@ -357,10 +359,10 @@ public class PersonnelService { * @author cwchen * @date 2025/10/24 12:15 */ - public ResourceFilePo setResourceFile(PersonnelCertificate item) { + public ResourceFilePo setResourceFile(PersonnelCertificate item,String sourceTable) { ResourceFilePo resourceFilePo = new ResourceFilePo(); resourceFilePo.setBusinessId(item.getPersonnelCertificateId()); - resourceFilePo.setSourceTable(TableConstants.TB_PERSONNEL_CERTIFICATE); + resourceFilePo.setSourceTable(sourceTable); resourceFilePo.setFileType(item.getCertificateType()); return resourceFilePo; } diff --git a/bonus-common/src/main/java/com/bonus/common/domain/mainDatabase/dto/EnterpriseDto.java b/bonus-common/src/main/java/com/bonus/common/domain/mainDatabase/dto/EnterpriseDto.java index 025b985..51c87b7 100644 --- a/bonus-common/src/main/java/com/bonus/common/domain/mainDatabase/dto/EnterpriseDto.java +++ b/bonus-common/src/main/java/com/bonus/common/domain/mainDatabase/dto/EnterpriseDto.java @@ -8,10 +8,7 @@ import lombok.Data; import org.hibernate.validator.constraints.Length; import org.springframework.format.annotation.DateTimeFormat; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; +import javax.validation.constraints.*; import java.util.Date; import java.util.List; import java.util.Optional; @@ -95,6 +92,7 @@ public class EnterpriseDto { */ @NotBlank(message = "法人身份证号不能为空", groups = {ADD.class, UPDATE.class}) @Length(max = 32, message = "法人身份证号字符长度不能超过32", groups = {ADD.class, UPDATE.class}) + @Pattern(regexp = "(^\\d{15}$)|(^\\d{17}(\\d|X|x)$)",message = "法人身份证号格式不正确", groups = {ADD.class, UPDATE.class}) private String legalPersonIdCard; /** @@ -114,7 +112,8 @@ public class EnterpriseDto { /** * 法人联系方式 */ - @Length(max = 11, message = "法人联系方式字符长度不能超过32", groups = {ADD.class, UPDATE.class}) + @Length(max = 11, message = "法人联系方式字符长度不能超过11", groups = {ADD.class, UPDATE.class}) + @Pattern(regexp = "^(?:(?:\\+|00)?86)?1[3-9]\\d{9}$",message = "法人联系方式格式不正确", groups = {ADD.class, UPDATE.class}) private String legalPersonPhone; /** diff --git a/bonus-common/src/main/java/com/bonus/common/domain/mainDatabase/dto/EnterprisePersonnelDto.java b/bonus-common/src/main/java/com/bonus/common/domain/mainDatabase/dto/EnterprisePersonnelDto.java index 72a0ad6..896f0ad 100644 --- a/bonus-common/src/main/java/com/bonus/common/domain/mainDatabase/dto/EnterprisePersonnelDto.java +++ b/bonus-common/src/main/java/com/bonus/common/domain/mainDatabase/dto/EnterprisePersonnelDto.java @@ -11,10 +11,7 @@ import lombok.NoArgsConstructor; import org.hibernate.validator.constraints.Length; import org.springframework.format.annotation.DateTimeFormat; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; +import javax.validation.constraints.*; import java.util.Date; import java.util.List; import java.util.Optional; @@ -58,6 +55,7 @@ public class EnterprisePersonnelDto { */ @NotBlank(message = "身份证号码不能为空", groups = {ADD.class, UPDATE.class}) @Length(max = 32, message = "身份证号码字符长度不能超过32", groups = {ADD.class, UPDATE.class}) + @Pattern(regexp = "(^\\d{15}$)|(^\\d{17}(\\d|X|x)$)",message = "身份证号码格式不正确", groups = {ADD.class, UPDATE.class}) private String personnelIdCard; /** @@ -109,6 +107,7 @@ public class EnterprisePersonnelDto { */ @NotBlank(message = "联系方式不能为空", groups = {ADD.class, UPDATE.class}) @Length(max = 11, message = "联系方式字符长度不能超过11", groups = {ADD.class, UPDATE.class}) + @Pattern(regexp = "^(?:(?:\\+|00)?86)?1[3-9]\\d{9}$",message = "联系方式格式不正确", groups = {ADD.class, UPDATE.class}) private String personnelPhone; /** @@ -175,12 +174,14 @@ public class EnterprisePersonnelDto { public static class PersonnelCertificateDto { private PersonnelCertificate personnelCertificate; private ResourceFilePo resourceFilePo; - /** - * 证书删除的文件路径 - */ - private List delFiles; + } + /** + * 证书删除的文件路径 + */ + private List delCertificateFiles; + /** * 查询条件限制 */ diff --git a/bonus-common/src/main/java/com/bonus/common/domain/mainDatabase/po/EnterprisePersonnel.java b/bonus-common/src/main/java/com/bonus/common/domain/mainDatabase/po/EnterprisePersonnel.java index 10b9d05..1c074b0 100644 --- a/bonus-common/src/main/java/com/bonus/common/domain/mainDatabase/po/EnterprisePersonnel.java +++ b/bonus-common/src/main/java/com/bonus/common/domain/mainDatabase/po/EnterprisePersonnel.java @@ -35,6 +35,11 @@ public class EnterprisePersonnel { */ private String personnelName; + /** + * 人员身份证id + */ + private String personnelIdCard; + /** * 入职时间 */ 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 0adedcf..cc10998 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 @@ -31,6 +31,7 @@ public class CertificateUtil { 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", "造价员证过期"); } @@ -78,8 +79,8 @@ public class CertificateUtil { return isIdCardExpired(endDate); } - // 其他证书直接检查过期 - return DateTimeHelper.isExpired(endDate); + // 其他证书也按照 '-' 截取处理 + return isOtherCertificateExpired(endDate); } /** @@ -103,6 +104,27 @@ public class CertificateUtil { return DateTimeHelper.isExpired(endDate); } + /** + * 检查其他证书是否过期 + */ + private static boolean isOtherCertificateExpired(String endDate) { + // 检查是否为长期有效 + for (String indicator : PERMANENT_INDICATORS) { + if (endDate.contains(indicator)) { + return false; + } + } + + // 处理日期格式:起始日期-结束日期 + String[] dateParts = endDate.split(" - "); + if (dateParts.length == 2) { + return DateTimeHelper.isExpired(dateParts[1]); + } + + // 如果格式不符合预期,按普通日期处理 + return DateTimeHelper.isExpired(endDate); + } + /** * 构建错误信息对象 */ diff --git a/bonus-file/src/main/java/com/bonus/file/util/FileUtil.java b/bonus-file/src/main/java/com/bonus/file/util/FileUtil.java index a3d59c1..82ec74d 100644 --- a/bonus-file/src/main/java/com/bonus/file/util/FileUtil.java +++ b/bonus-file/src/main/java/com/bonus/file/util/FileUtil.java @@ -33,7 +33,7 @@ public class FileUtil { // 生成唯一文件名 String originalFilename = file.getOriginalFilename(); String fileExtension = getFileExtension(originalFilename); - String uniqueFileName = UUID.randomUUID().toString() + fileExtension; + String uniqueFileName = UUID.randomUUID().toString().replaceAll("-","") + fileExtension; // 构建完整路径:baseDir/年/月/日/UUID.扩展名 return Paths.get(baseDir, datePath, uniqueFileName).toString(); diff --git a/bonus-framework/src/main/java/com/bonus/framework/interceptor/XssRequestWrapper.java b/bonus-framework/src/main/java/com/bonus/framework/interceptor/XssRequestWrapper.java index 8c378ad..5bc62c8 100644 --- a/bonus-framework/src/main/java/com/bonus/framework/interceptor/XssRequestWrapper.java +++ b/bonus-framework/src/main/java/com/bonus/framework/interceptor/XssRequestWrapper.java @@ -71,7 +71,7 @@ public class XssRequestWrapper extends HttpServletRequestWrapper { // 添加特殊字符和编码模式 XSS_PATTERNS.add(Pattern.compile("<.*>", Pattern.CASE_INSENSITIVE)); // 尖括号 XSS_PATTERNS.add(Pattern.compile("\\[.*\\]", Pattern.CASE_INSENSITIVE)); // 方括号 - XSS_PATTERNS.add(Pattern.compile("\\(.*\\)", Pattern.CASE_INSENSITIVE)); // 圆括号 +// XSS_PATTERNS.add(Pattern.compile("\\(.*\\)", Pattern.CASE_INSENSITIVE)); // 圆括号 XSS_PATTERNS.add(Pattern.compile("'.*'", Pattern.CASE_INSENSITIVE)); // 单引号 XSS_PATTERNS.add(Pattern.compile("\".*\"", Pattern.CASE_INSENSITIVE)); // 双引号 // 更完善的% 校验 URL编码排除 diff --git a/bonus-mainDatabase/src/main/java/com/bonus/mainDataBase/service/impl/MDEnterpriseServiceImpl.java b/bonus-mainDatabase/src/main/java/com/bonus/mainDataBase/service/impl/MDEnterpriseServiceImpl.java index 8ec37cf..e4c520f 100644 --- a/bonus-mainDatabase/src/main/java/com/bonus/mainDataBase/service/impl/MDEnterpriseServiceImpl.java +++ b/bonus-mainDatabase/src/main/java/com/bonus/mainDataBase/service/impl/MDEnterpriseServiceImpl.java @@ -33,8 +33,8 @@ public class MDEnterpriseServiceImpl implements IMDEnterpriseService { for (EnterpriseVo vo : list) { List nums = imdEnterpriseMapper.getNum(vo); vo.setFinanceNum(nums.get(0)); - vo.setPerformanceNum(nums.get(1)); - vo.setPersonnelNum(nums.get(2)); + vo.setPersonnelNum(nums.get(1)); + vo.setPerformanceNum(nums.get(2)); vo.setQualificationNum(nums.get(3)); } return list; diff --git a/bonus-mainDatabase/src/main/resources/mapper/CertificateMapper.xml b/bonus-mainDatabase/src/main/resources/mapper/CertificateMapper.xml index 09e4009..cae2273 100644 --- a/bonus-mainDatabase/src/main/resources/mapper/CertificateMapper.xml +++ b/bonus-mainDatabase/src/main/resources/mapper/CertificateMapper.xml @@ -72,7 +72,15 @@ - SELECT COUNT(*) FROM tb_enterprise_finance WHERE del_flag = '0' + SELECT COUNT(*) FROM tb_enterprise_finance WHERE del_flag = '0' AND enterprise_id = #{enterpriseId} UNION ALL - SELECT COUNT(*) FROM tb_enterprise_personnel WHERE del_flag = '0' + SELECT COUNT(*) FROM tb_enterprise_personnel WHERE del_flag = '0' AND enterprise_id = #{enterpriseId} UNION ALL - SELECT COUNT(*) FROM tb_enterprise_performance WHERE del_flag = '0' + SELECT COUNT(*) FROM tb_enterprise_performance WHERE del_flag = '0' AND enterprise_id = #{enterpriseId} UNION ALL - SELECT COUNT(*) FROM tb_enterprise_qualification WHERE del_flag = '0' + SELECT COUNT(*) FROM tb_enterprise_qualification WHERE del_flag = '0' AND enterprise_id = #{enterpriseId} - + diff --git a/bonus-ocr/src/main/java/com/bonus/ocr/service/OcrService.java b/bonus-ocr/src/main/java/com/bonus/ocr/service/OcrService.java index 3d95d2a..c6ce3ce 100644 --- a/bonus-ocr/src/main/java/com/bonus/ocr/service/OcrService.java +++ b/bonus-ocr/src/main/java/com/bonus/ocr/service/OcrService.java @@ -89,7 +89,7 @@ public class OcrService { log.info("OCR服务开始识别"); // 执行请求 - try (CloseableHttpResponse response = httpClient.execute(httpPost)) { + /*try (CloseableHttpResponse response = httpClient.execute(httpPost)) { HttpEntity entity = response.getEntity(); String responseBody = EntityUtils.toString(entity, "UTF-8"); log.info("OCR服务响应状态: {}", response.getStatusLine().getStatusCode()); @@ -112,8 +112,8 @@ public class OcrService { } return ocrResponse; - } - + }*/ + return null; } catch (Exception e) { log.error("调用OCR服务失败", e); return null;