| | |
| | | package com.gkhy.exam.system.service.impl; |
| | | |
| | | import com.alibaba.excel.EasyExcel; |
| | | import com.alibaba.excel.ExcelReader; |
| | | import com.alibaba.excel.context.AnalysisContext; |
| | | import com.alibaba.excel.read.listener.ReadListener; |
| | | import com.alibaba.excel.read.metadata.ReadSheet; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.gkhy.exam.common.api.CommonPage; |
| | | import com.gkhy.exam.common.api.CommonResult; |
| | | import com.gkhy.exam.common.api.ImportResult; |
| | | import com.gkhy.exam.common.domain.entity.SysDept; |
| | | import com.gkhy.exam.common.domain.entity.SysUser; |
| | | import com.gkhy.exam.common.utils.PageUtils; |
| | | import com.gkhy.exam.common.utils.SecurityUtils; |
| | | import com.gkhy.exam.system.domain.Correction; |
| | | import com.gkhy.exam.system.domain.DTO.StandingBookImportDTO; |
| | | import com.gkhy.exam.system.domain.StandingBook; |
| | | import com.gkhy.exam.system.domain.vo.DeptVo; |
| | | import com.gkhy.exam.system.mapper.StandingBookMapper; |
| | | import com.gkhy.exam.system.mapper.SysDeptMapper; |
| | | import com.gkhy.exam.system.mapper.SysUserMapper; |
| | | import com.gkhy.exam.system.service.StandingBookService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | |
| | | @Autowired |
| | | private StandingBookMapper standingBookMapper; |
| | | |
| | | @Autowired |
| | | private SysDeptMapper sysDeptMapper; |
| | | |
| | | @Autowired |
| | | |
| | | private SysUserMapper sysUserMapper; |
| | | @Override |
| | | public CommonPage selectStandingBookList(StandingBook standingBook) { |
| | | PageUtils.startPage(); |
| | |
| | | } |
| | | return CommonResult.failed(); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public ImportResult importStandingBooks(Long companyId, MultipartFile file) { |
| | | ImportResult result = new ImportResult(); |
| | | result.setSuccessCount(0); |
| | | result.setFailCount(0); |
| | | result.setErrorMessages(new ArrayList<>()); |
| | | |
| | | SysDept sysDept = new SysDept(); |
| | | sysDept.setCompanyId(companyId); |
| | | List<DeptVo> deptVos = sysDeptMapper.selectDeptList(sysDept); |
| | | Map<String, Long> deptNameIdMap = deptVos.stream() |
| | | .collect(Collectors.toMap(DeptVo::getDeptName, DeptVo::getDeptId)); |
| | | |
| | | LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(SysUser::getCompanyId, companyId); |
| | | queryWrapper.eq(SysUser::getDelFlag, 0); |
| | | List<SysUser> sysUsers = sysUserMapper.selectList(queryWrapper); |
| | | Map<String, Long> userNameIdMap = sysUsers.stream() |
| | | .collect(Collectors.toMap(SysUser::getName, SysUser::getId)); |
| | | |
| | | try { |
| | | // 使用EasyExcel读取文件 |
| | | ReadListener<StandingBookImportDTO> listener = new ReadListener<StandingBookImportDTO>() { |
| | | @Override |
| | | public void invoke(StandingBookImportDTO dto, AnalysisContext context) { |
| | | try { |
| | | // 转换为实体对象 |
| | | StandingBook standingBook = new StandingBook(); |
| | | standingBook.setCompanyId(companyId); |
| | | standingBook.setDeptId(deptNameIdMap.get(dto.getDeptName()) == null ? 0L : deptNameIdMap.get(dto.getDeptName())); |
| | | standingBook.setName(dto.getName()); |
| | | standingBook.setModel(dto.getModel()); |
| | | standingBook.setPersonResponsible(userNameIdMap.get(dto.getPersonResponsible()) == null ? 0L : userNameIdMap.get(dto.getPersonResponsible())); |
| | | String deviceType = dto.getDeviceType(); |
| | | switch (deviceType) { |
| | | case "计算机设备": |
| | | standingBook.setDeviceType(1); |
| | | break; |
| | | case "办公自动化设备": |
| | | standingBook.setDeviceType(2); |
| | | break; |
| | | case "外部设备": |
| | | standingBook.setDeviceType(3); |
| | | break; |
| | | case "生产设备": |
| | | standingBook.setDeviceType(5); |
| | | break; |
| | | default: |
| | | standingBook.setDeviceType(4); |
| | | break; |
| | | } |
| | | standingBook.setNumber(dto.getNumber()); |
| | | standingBook.setBrand(dto.getBrand()); |
| | | standingBook.setConfidentiality(dto.getConfidentiality()); |
| | | switch (dto.getStatus()) { |
| | | case "完好": |
| | | standingBook.setStatus(1); |
| | | break; |
| | | case "需整改": |
| | | standingBook.setStatus(2); |
| | | break; |
| | | default: |
| | | standingBook.setStatus(3); |
| | | break; |
| | | } |
| | | standingBook.setPurpose(dto.getPurpose()); |
| | | standingBook.setLocation(dto.getLocation()); |
| | | standingBook.setUsed(dto.getUsed()); |
| | | standingBook.setRemark(dto.getRemark()); |
| | | standingBook.setCreateTime(LocalDateTime.now()); |
| | | standingBook.setCreateBy(SecurityUtils.getUsername()); |
| | | standingBookMapper.insert(standingBook); |
| | | result.setSuccessCount(result.getSuccessCount() + 1); |
| | | } catch (Exception e) { |
| | | result.getErrorMessages().add("行" + context.readRowHolder().getRowIndex() + "导入失败:" + e.getMessage()); |
| | | result.setFailCount(result.getFailCount() + 1); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | | public void doAfterAllAnalysed(AnalysisContext context) { |
| | | // 导入完成后的处理 |
| | | } |
| | | }; |
| | | |
| | | // 创建读取器 |
| | | ExcelReader excelReader = EasyExcel.read(file.getInputStream(), StandingBookImportDTO.class, listener).build(); |
| | | ReadSheet readSheet = EasyExcel.readSheet(0).build(); |
| | | excelReader.read(readSheet); |
| | | |
| | | } catch (Exception e) { |
| | | result.getErrorMessages().add("导入失败:" + e.getMessage()); |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |