From 497e040c81e75d6d00b51786b08764e2028ff7c0 Mon Sep 17 00:00:00 2001 From: wkc <978997012@qq.com> Date: Wed, 11 Feb 2026 15:00:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=91=98=E5=B7=A5=E5=AE=9E=E4=BD=93?= =?UTF-8?q?=E5=85=B3=E7=B3=BB=E5=AF=BC=E5=85=A5=E6=B7=BB=E5=8A=A0=E8=BA=AB?= =?UTF-8?q?=E4=BB=BD=E8=AF=81=E5=8F=B7=E5=AD=98=E5=9C=A8=E6=80=A7=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ffEnterpriseRelationImportServiceImpl.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/service/impl/CcdiStaffEnterpriseRelationImportServiceImpl.java b/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/service/impl/CcdiStaffEnterpriseRelationImportServiceImpl.java index a2f06f8..69cf3a9 100644 --- a/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/service/impl/CcdiStaffEnterpriseRelationImportServiceImpl.java +++ b/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/service/impl/CcdiStaffEnterpriseRelationImportServiceImpl.java @@ -1,12 +1,15 @@ package com.ruoyi.ccdi.service.impl; import com.alibaba.fastjson2.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ruoyi.ccdi.domain.CcdiBaseStaff; import com.ruoyi.ccdi.domain.CcdiStaffEnterpriseRelation; import com.ruoyi.ccdi.domain.dto.CcdiStaffEnterpriseRelationAddDTO; import com.ruoyi.ccdi.domain.excel.CcdiStaffEnterpriseRelationExcel; import com.ruoyi.ccdi.domain.vo.ImportResult; import com.ruoyi.ccdi.domain.vo.ImportStatusVO; import com.ruoyi.ccdi.domain.vo.StaffEnterpriseRelationImportFailureVO; +import com.ruoyi.ccdi.mapper.CcdiBaseStaffMapper; import com.ruoyi.ccdi.mapper.CcdiStaffEnterpriseRelationMapper; import com.ruoyi.ccdi.service.ICcdiStaffEnterpriseRelationImportService; import com.ruoyi.ccdi.utils.ImportLogUtils; @@ -43,6 +46,9 @@ public class CcdiStaffEnterpriseRelationImportServiceImpl implements ICcdiStaffE @Resource private RedisTemplate redisTemplate; + @Resource + private CcdiBaseStaffMapper baseStaffMapper; + @Override @Async @Transactional @@ -55,6 +61,28 @@ public class CcdiStaffEnterpriseRelationImportServiceImpl implements ICcdiStaffE List newRecords = new ArrayList<>(); List failures = new ArrayList<>(); + // 批量验证员工身份证号是否存在 + Set excelPersonIds = excelList.stream() + .map(CcdiStaffEnterpriseRelationExcel::getPersonId) + .filter(StringUtils::isNotEmpty) + .collect(Collectors.toSet()); + + Set existingPersonIds = new HashSet<>(); + if (!excelPersonIds.isEmpty()) { + ImportLogUtils.logBatchQueryStart(log, taskId, "员工身份证号", excelPersonIds.size()); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.select(CcdiBaseStaff::getIdCard) + .in(CcdiBaseStaff::getIdCard, excelPersonIds); + + List existingStaff = baseStaffMapper.selectList(wrapper); + existingPersonIds = existingStaff.stream() + .map(CcdiBaseStaff::getIdCard) + .collect(Collectors.toSet()); + + ImportLogUtils.logBatchQueryComplete(log, taskId, "员工身份证号", existingPersonIds.size()); + } + // 批量查询已存在的person_id + social_credit_code组合 ImportLogUtils.logBatchQueryStart(log, taskId, "已存在的员工企业关系组合", excelList.size()); Set existingCombinations = getExistingCombinations(excelList); @@ -68,6 +96,13 @@ public class CcdiStaffEnterpriseRelationImportServiceImpl implements ICcdiStaffE CcdiStaffEnterpriseRelationExcel excel = excelList.get(i); try { + // 身份证号存在性检查 + if (!existingPersonIds.contains(excel.getPersonId())) { + throw new RuntimeException(String.format( + "第%d行: 身份证号[%s]不存在于员工信息表中", + i + 1, excel.getPersonId())); + } + // 转换为AddDTO进行验证 CcdiStaffEnterpriseRelationAddDTO addDTO = new CcdiStaffEnterpriseRelationAddDTO(); BeanUtils.copyProperties(excel, addDTO);