“djh”
2025-12-03 e32ac074e0cdc07b7551155e2e1c24684857f2b7
multi-system/src/main/java/com/gkhy/exam/system/service/impl/StandingBookServiceImpl.java
@@ -1,19 +1,36 @@
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>
@@ -28,6 +45,13 @@
    @Autowired
    private StandingBookMapper standingBookMapper;
    @Autowired
    private SysDeptMapper sysDeptMapper;
    @Autowired
    private SysUserMapper sysUserMapper;
    @Override
    public CommonPage selectStandingBookList(StandingBook standingBook) {
        PageUtils.startPage();
@@ -71,4 +95,109 @@
        }
        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;
    }
}