heheng
2025-11-20 5b60b28f6c9556ad438f55fe57c8d3edc32716ae
multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalKnowledgeServiceImpl.java
@@ -1,19 +1,31 @@
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.update.LambdaUpdateWrapper;
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.constant.UserConstant;
import com.gkhy.exam.common.utils.PageUtils;
import com.gkhy.exam.common.utils.SecurityUtils;
import com.gkhy.exam.system.domain.DTO.KnowledgeImportDTO;
import com.gkhy.exam.system.domain.DTO.StandingBookImportDTO;
import com.gkhy.exam.system.domain.ExternalKnowledge;
import com.gkhy.exam.system.domain.InternalKnowledge;
import com.gkhy.exam.system.mapper.InternalKnowledgeMapper;
import com.gkhy.exam.system.service.InternalKnowledgeService;
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;
/**
@@ -29,6 +41,7 @@
    @Autowired
    private InternalKnowledgeMapper internalKnowledgeMapper;
    @Override
    public CommonPage selectInternalKnowledgeList(InternalKnowledge internalKnowledge) {
        PageUtils.startPage();
@@ -39,12 +52,12 @@
    @Override
    public CommonResult saveInternalKnowledge(InternalKnowledge internalKnowledge) {
        int i = 0;
        if (internalKnowledge.getId() == null){
        if (internalKnowledge.getId() == null) {
            internalKnowledge.setCreateBy(SecurityUtils.getUsername());
            internalKnowledge.setCreateTime(LocalDateTime.now());
            i = internalKnowledgeMapper.insert(internalKnowledge);
        }else {
        } else {
            internalKnowledge.setUpdateBy(SecurityUtils.getUsername());
            internalKnowledge.setUpdateTime(LocalDateTime.now());
            i = internalKnowledgeMapper.updateById(internalKnowledge);
@@ -61,4 +74,74 @@
                        .set(InternalKnowledge::getUpdateBy, SecurityUtils.getUsername()));
        return CommonResult.success();
    }
    @Override
    @Transactional
    public ImportResult importInternalKnowledge(Long companyId, MultipartFile file) {
        ImportResult result = new ImportResult();
        result.setSuccessCount(0);
        result.setFailCount(0);
        result.setErrorMessages(new ArrayList<>());
        try {
            // 使用EasyExcel读取文件
            ReadListener<KnowledgeImportDTO> listener = new ReadListener<KnowledgeImportDTO>() {
                @Override
                public void invoke(KnowledgeImportDTO dto, AnalysisContext context) {
                    try {
                        // 转换为实体对象
                        InternalKnowledge knowledge = new InternalKnowledge();
                        knowledge.setName(dto.getName());
                        switch (dto.getKnowledgeType()) {
                            case "体系文件":
                                knowledge.setKnowledgeType(1);
                                break;
                            case "项目文件":
                                knowledge.setKnowledgeType(2);
                                break;
                            case "其他":
                                knowledge.setKnowledgeType(3);
                                break;
                            case "技术文件":
                                knowledge.setKnowledgeType(4);
                                break;
                            case "知识产权":
                                knowledge.setKnowledgeType(5);
                                break;
//                            case "质量服务标准":
//                                knowledge.setKnowledgeType(6);
//                                break;
                            default:
                                knowledge.setKnowledgeType(7);
                                break;
                        }
                        knowledge.setCompanyId(companyId);
                        knowledge.setNumber(dto.getNumber());
                        internalKnowledgeMapper.insert(knowledge);
                        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(), KnowledgeImportDTO.class, listener).build();
            ReadSheet readSheet = EasyExcel.readSheet(0).build();
            excelReader.read(readSheet);
        } catch (Exception e) {
            result.getErrorMessages().add("导入失败:" + e.getMessage());
        }
        return result;
    }
}