From f0f00e9ba8a755e4317e029d73b69a92ad9f9df1 Mon Sep 17 00:00:00 2001 From: kongzy <kongzy> Date: 星期六, 14 九月 2024 17:02:41 +0800 Subject: [PATCH] update --- exam-system/src/main/java/com/gkhy/exam/system/service/impl/SysCommonServiceImpl.java | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 105 insertions(+), 1 deletions(-) diff --git a/exam-system/src/main/java/com/gkhy/exam/system/service/impl/SysCommonServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/system/service/impl/SysCommonServiceImpl.java index 2ee2b25..9d8f52d 100644 --- a/exam-system/src/main/java/com/gkhy/exam/system/service/impl/SysCommonServiceImpl.java +++ b/exam-system/src/main/java/com/gkhy/exam/system/service/impl/SysCommonServiceImpl.java @@ -2,22 +2,35 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.gkhy.exam.common.config.FilePathConfig; +import com.gkhy.exam.common.config.MinioConfig; +import com.gkhy.exam.common.domain.entity.SysUser; import com.gkhy.exam.common.enums.ResourceTypeEnum; +import com.gkhy.exam.common.enums.UserTypeEnum; +import com.gkhy.exam.common.excel.StudentExcelData; +import com.gkhy.exam.common.excel.StudentExcelDataListener; import com.gkhy.exam.common.exception.ApiException; import com.gkhy.exam.common.utils.*; import com.gkhy.exam.system.domain.ExResource; +import com.gkhy.exam.system.domain.ExStudent; +import com.gkhy.exam.system.domain.SysCompany; import com.gkhy.exam.system.domain.vo.UploadObjectVO; import com.gkhy.exam.system.mapper.ExResourceMapper; +import com.gkhy.exam.system.service.ExStudentService; import com.gkhy.exam.system.service.SysCommonService; +import com.gkhy.exam.system.service.SysCompanyService; +import com.gkhy.exam.system.service.SysUserService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; import sun.misc.BASE64Decoder; @@ -33,6 +46,9 @@ @Slf4j public class SysCommonServiceImpl implements SysCommonService { + @Autowired + private MinioConfig minioConfig; + @Value("${image.upload_image}") private String uploadPath; @Autowired @@ -43,9 +59,15 @@ private ExResourceMapper resourceMapper; @Resource private FilePathConfig filePathConfig; + @Autowired + private SysCompanyService companyService; + @Autowired + private ExStudentService studentService; + @Autowired + private SysUserService userService; // 使用HashSet存储允许的文件格式,提高查找效率 - private final HashSet<String> FORMATSET = new HashSet<>(Arrays.asList(".mp4", ".mp3", ".xls", ".xlsx", ".doc", ".docx", ".ppt", ".pptx", ".pdf")); + private final HashSet<String> FORMATSET = new HashSet<>(Arrays.asList(".mp4",".doc", ".docx", ".ppt", ".pptx", ".pdf")); @Resource(name = "threadPoolTaskExecutor") @@ -202,6 +224,7 @@ log.warn("临时目录 {}已删除", new File(localPath).getParent()); }); uploadObjectVO.setPath(minioPath); + uploadObjectVO.setUrl(minioConfig.getEndpoint()+minioConfig.getBucketName()+"/"+minioPath); return uploadObjectVO; } @@ -236,6 +259,87 @@ } } + @Override + @Transactional(rollbackFor = RuntimeException.class) + public void importStudent() { + String path="/home/java/train_exam/back/安全教育学员模板.xlsx"; + // String path="F:/kzy/乱七八糟/安全教育学员模板.xlsx"; + List<StudentExcelData> studentExcelDataList=EasyExcel.read(path, StudentExcelData.class,new StudentExcelDataListener()).sheet().doReadSync(); + List<ExStudent> students=new ArrayList<>(); + List<StudentExcelData> errorStudents=new ArrayList<>(); + SysCompany company=companyService.getOne(Wrappers.<SysCompany>lambdaQuery().eq(SysCompany::getName,studentExcelDataList.get(0).getCompanyName()) + .eq(SysCompany::getDelFlag,0)); + if(company==null){ + throw new ApiException("公司不存在"); + } + for(StudentExcelData studentExcelData:studentExcelDataList){ + String errorMessage=validateData(studentExcelData); + if(StringUtils.isNotBlank(errorMessage)){ + studentExcelData.setRemark(errorMessage); + errorStudents.add(studentExcelData); + continue; + } + ExStudent dbStudent=studentService.getOne(Wrappers.<ExStudent>lambdaQuery().eq(ExStudent::getPhone,studentExcelData.getPhone())); + if(dbStudent!=null){ + if(!dbStudent.getName().equals(studentExcelData.getName())){ + studentExcelData.setRemark("序号"+studentExcelData.getIndex()+"学员用户已存在"); + errorStudents.add(studentExcelData); + } + continue; + } + ExStudent student=new ExStudent(); + BeanUtils.copyProperties(studentExcelData,student,new String[]{"sex"}); + if("男".equals(studentExcelData.getSex())){ + student.setSex(0); + }else{ + student.setSex(1); + } + String departName=studentExcelData.getDeptName(); + + List<SysUser> users=userService.list(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getName,departName).eq(SysUser::getUserType, UserTypeEnum.DEPART_USER.getCode()).eq(SysUser::getDelFlag,0).last(" limit 1")); + if(users.isEmpty()){ + studentExcelData.setRemark("序号"+studentExcelData.getIndex()+"未找到相应的部门账号"); + errorStudents.add(studentExcelData); + continue; + } + + student.setPassword(SecurityUtils.encryptPassword("123456@a")); + student.setCompanyId(company.getId()); + student.setCreateId(users.get(0).getId()); + students.add(student); + } + if(!errorStudents.isEmpty()){ + EasyExcel.write("error.xlsx").head(StudentExcelData.class) + .sheet("异常用户列表") + .doWrite(errorStudents); + } + studentService.saveBatch(students); + } + + + + + + public String validateData(StudentExcelData studentExcelData){ + if(StringUtils.isBlank(studentExcelData.getName())){ + return "序号"+studentExcelData.getIndex()+"姓名为空"; + } + if(StringUtils.isBlank(studentExcelData.getSex())){ + return "序号"+studentExcelData.getIndex()+"性别为空"; + } + if(StringUtils.isBlank(studentExcelData.getIdNo())||studentExcelData.getIdNo().length()!=18){ + return "序号"+studentExcelData.getIndex()+"身份证为空或者长度不正确"; + } + if(StringUtils.isBlank(studentExcelData.getPhone())||studentExcelData.getPhone().length()!=11){ + return "序号"+studentExcelData.getIndex()+"手机号为空或者长度不正确"; + } + + if(StringUtils.isBlank(studentExcelData.getDeptName())){ + return "序号"+studentExcelData.getIndex()+"部门为空"; + } + return ""; + } + public UploadObjectVO mergeFile(String fileMd5,String fileName){ String subfix = fileName.substring(fileName.lastIndexOf(".")); String systemDir=System.getProperty("user.dir"); -- Gitblit v1.9.2