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; /** *

* 内部知识 服务实现类 *

* * @author hh * @since 2025-08-25 15:01:44 */ @Service public class InternalKnowledgeServiceImpl extends ServiceImpl implements InternalKnowledgeService { @Autowired private InternalKnowledgeMapper internalKnowledgeMapper; @Override public CommonPage selectInternalKnowledgeList(InternalKnowledge internalKnowledge) { PageUtils.startPage(); List internalKnowledge1 = internalKnowledgeMapper.getInternalKnowledge(internalKnowledge); return CommonPage.restPage(internalKnowledge1); } @Override public CommonResult saveInternalKnowledge(InternalKnowledge internalKnowledge) { int i = 0; if (internalKnowledge.getId() == null) { internalKnowledge.setCreateBy(SecurityUtils.getUsername()); internalKnowledge.setCreateTime(LocalDateTime.now()); i = internalKnowledgeMapper.insert(internalKnowledge); } else { internalKnowledge.setUpdateBy(SecurityUtils.getUsername()); internalKnowledge.setUpdateTime(LocalDateTime.now()); i = internalKnowledgeMapper.updateById(internalKnowledge); } return CommonResult.success(); } @Override public CommonResult deletedInternalKnowledge(Integer id) { internalKnowledgeMapper.update(new InternalKnowledge(), new LambdaUpdateWrapper().eq(InternalKnowledge::getId, id) .set(InternalKnowledge::getDelFlag, UserConstant.DISENABLE) .set(InternalKnowledge::getUpdateTime, LocalDateTime.now()) .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 listener = new ReadListener() { @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; } }