zouxuan il y a 6 mois
Parent
commit
a91f2557aa

+ 42 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/execl/analysis/TeacherImportAnalysis.java

@@ -21,6 +21,7 @@ import java.io.File;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 
 @Slf4j
@@ -37,6 +38,10 @@ public class TeacherImportAnalysis extends DataAnalysis<TeacherImportAnalysis> {
     private final Map<String, TeacherImportWrapper.TeacherImport> recordMap = Maps.newHashMap();
     private final Map<String, Long> subjectMap = Maps.newHashMap();
     private final Map<String, Long> tenantMap = Maps.newHashMap();
+    private final List<String> phones = Lists.newArrayList();
+    private final List<String> idCardNos = Lists.newArrayList();
+    private final List<String> existPhones = Lists.newArrayList();
+    private final List<String> existIdCardNos = Lists.newArrayList();
     public TeacherImportAnalysis(AnalysisContext context) {
         super(context);
     }
@@ -110,12 +115,32 @@ public class TeacherImportAnalysis extends DataAnalysis<TeacherImportAnalysis> {
                 //手机号校验
                 if (!item.getPhone().matches("^1[3-9]\\d{9}$")) {
                     ret.append("手机号格式不正确;");
+                }else {
+                    //校验是否重复
+                    if(phones.contains(item.getPhone())){
+                        ret.append("手机号重复;");
+                    }else {
+                        if(existPhones.contains(item.getPhone())){
+                            ret.append("手机号已存在;");
+                        }
+                        phones.add(item.getPhone());
+                    }
                 }
             }
             if (StringUtils.isNotEmpty(item.getIdCardNo())) {
                 //身份证校验
                 if (!item.getIdCardNo().matches("(^\\d{6}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|X|x)$)|(^\\d{6}\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}$)")) {
                     ret.append("身份证格式不正确;");
+                }else {
+                    //校验是否重复
+                    if(idCardNos.contains(item.getIdCardNo())){
+                        ret.append("身份证号重复;");
+                    }else {
+                        if(existIdCardNos.contains(item.getIdCardNo())){
+                            ret.append("身份证号已存在;");
+                        }
+                        idCardNos.add(item.getIdCardNo());
+                    }
                 }
             }
             if (StringUtils.isEmpty(item.getSubjectName())) {
@@ -159,9 +184,23 @@ public class TeacherImportAnalysis extends DataAnalysis<TeacherImportAnalysis> {
      * 加载校验数据参数
      */
     private void loadVerifyParamData() {
-        //校验数据
-        //获取所有手机号
-
+        //获取所有的手机号和身份证号
+        List<String> phones = getTeacherImportWrappers().stream()
+                .map(TeacherImportWrapper.TeacherImport::getPhone)
+                .filter(StringUtils::isNotBlank)
+                .distinct()
+                .collect(Collectors.toList());
+        if (CollectionUtils.isNotEmpty(phones)) {
+            existPhones.addAll(easyExcelService.getPhones(phones));
+        }
+        List<String> idCardNos = getTeacherImportWrappers().stream()
+                .map(TeacherImportWrapper.TeacherImport::getIdCardNo)
+                .filter(StringUtils::isNotBlank)
+                .distinct()
+                .collect(Collectors.toList());
+        if (CollectionUtils.isNotEmpty(idCardNos)) {
+            existIdCardNos.addAll(easyExcelService.getIdCardNos(idCardNos));
+        }
         subjectMap.putAll(easyExcelService.getSubjectMap());
         tenantMap.putAll(easyExcelService.getTenantMap());
     }

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/mapper/SysUserMapper.java

@@ -54,4 +54,10 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
     com.yonge.cooleshow.auth.api.entity.SysUser findUserByPhone(@Param("phone") String phone);
 
     com.yonge.cooleshow.auth.api.entity.SysUser getByUserId(@Param("userId") Long userId);
+
+    List<String> existPhones(@Param("phones") List<String> phones,
+                             @Param("userType") String userType);
+
+    List<String> existIdCardNos(@Param("idCardNos") List<String> idCardNos,
+                                @Param("userType") String userType);
 }

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/EasyExcelService.java

@@ -26,4 +26,10 @@ public interface EasyExcelService {
 
     //获取机构map
     Map<String,Long> getTenantMap();
+
+    //根据手机号获取已存在的老师手机号
+    List<String> getPhones(List<String> phones);
+
+    //根据身份证号获取已存在的老师身份证号
+    List<String> getIdCardNos(List<String> idCardNos);
 }

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherService.java

@@ -218,5 +218,5 @@ public interface TeacherService extends IService<Teacher> {
 
     TeacherFreeTimeWrapper.TeacherFreeConfig queryTeacherTime();
 
-    void importTeacher(List<TeacherImportWrapper> collect);
+    void importTeacher(List<TeacherImportWrapper.TeacherImport> collect);
 }

+ 13 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/EasyExcelServiceImpl.java

@@ -3,10 +3,7 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 import com.yonge.cooleshow.biz.dal.entity.Subject;
 import com.yonge.cooleshow.biz.dal.entity.TenantAccountRecord;
 import com.yonge.cooleshow.biz.dal.entity.TenantInfo;
-import com.yonge.cooleshow.biz.dal.service.EasyExcelService;
-import com.yonge.cooleshow.biz.dal.service.SubjectService;
-import com.yonge.cooleshow.biz.dal.service.TenantAccountRecordService;
-import com.yonge.cooleshow.biz.dal.service.TenantInfoService;
+import com.yonge.cooleshow.biz.dal.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.stereotype.Service;
@@ -30,6 +27,8 @@ public class EasyExcelServiceImpl implements EasyExcelService {
     private SubjectService subjectService;
     @Resource
     private TenantInfoService tenantInfoService;
+    @Resource
+    private SysUserService sysUserService;
 
     @Override
     public List<TenantAccountRecord> getRecordById(List<String> ids) {
@@ -50,4 +49,14 @@ public class EasyExcelServiceImpl implements EasyExcelService {
         List<TenantInfo> list = tenantInfoService.lambdaQuery().list();
         return CollectionUtils.isEmpty(list) ? null : list.stream().collect(Collectors.toMap(TenantInfo::getName, TenantInfo::getId));
     }
+
+    @Override
+    public List<String> getPhones(List<String> phones) {
+        return sysUserService.getDao().existPhones(phones,"TEACHER");
+    }
+
+    @Override
+    public List<String> getIdCardNos(List<String> idCardNos) {
+        return sysUserService.getDao().existIdCardNos(idCardNos,"TEACHER");
+    }
 }

+ 3 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ExcelAnalyseCoreServiceImpl.java

@@ -90,6 +90,7 @@ public class ExcelAnalyseCoreServiceImpl implements ExcelAnalyseCoreService {
                     readTenantExcelData(wrapper);
                     break;
                 case TEACHER: // 老师导入
+                    readTeacherExcelData(wrapper);
                     break;
                 case STUDENT: // 学生导入
                     break;
@@ -149,8 +150,8 @@ public class ExcelAnalyseCoreServiceImpl implements ExcelAnalyseCoreService {
         createFileImportRecord(wrapper, context);
 
         // 入库业务数据
-        List<TeacherImportWrapper> collect = analysis.getTeacherImportWrappers().stream()
-                .filter(x -> !Optional.ofNullable(x.getId()).orElse("").equals("."))
+        List<TeacherImportWrapper.TeacherImport> collect = analysis.getTeacherImportWrappers().stream()
+                .filter(x -> !Optional.ofNullable(x.getPhone()).orElse("").equals("."))
                 .collect(Collectors.toList());
         if (context.getFailure() > 0) {
             log.info("readTeacherExcelData collect.size={}", collect.size());

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java

@@ -1688,7 +1688,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
     }
 
     @Override
-    public void importTeacher(List<TeacherImportWrapper> collect) {
+    public void importTeacher(List<TeacherImportWrapper.TeacherImport> collect) {
 
     }
 }

+ 14 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/SysUserMapper.xml

@@ -133,5 +133,19 @@
         from sys_user
         where id_ = #{userId}
     </select>
+    <select id="existPhones" resultType="java.lang.String">
+        select phone_ from sys_user where phone_ in
+        <foreach collection="phones" item="phone" open="(" separator="," close=")">
+            #{phone}
+        </foreach>
+        AND user_type_ LIKE CONCAT('%',#{userType},'%')
+    </select>
+    <select id="existIdCardNos" resultType="java.lang.String">
+        select id_card_no_ from sys_user where id_card_no_ in
+        <foreach collection="idCardNos" item="idCardNo" open="(" separator="," close=")">
+            #{idCardNo}
+        </foreach>
+        AND user_type_ LIKE CONCAT('%',#{userType},'%')
+    </select>
     <!--客服消息接收者-->
 </mapper>