multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/ExternalKnowledgeController.java
@@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; /** * <p> @@ -56,4 +57,13 @@ public CommonResult deletedExternalKnowledge(@RequestParam Integer id){ return externalKnowledgeService.deletedExternalKnowledge(id); } @PostMapping("/importExternalKnowledge") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "companyId", dataType = "int", required = true, value = "companyId"), }) @ApiOperation(value = "导入外部知识") public CommonResult importExternalKnowledge(MultipartFile file, Long companyId) { return CommonResult.success(externalKnowledgeService.importExternalKnowledge(companyId, file)); } } multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/InternalKnowledgeController.java
@@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; /** * <p> @@ -56,4 +57,13 @@ public CommonResult deletedInternalKnowledge(@RequestParam Integer id){ return internalKnowledgeService.deletedInternalKnowledge(id); } @PostMapping("/importInternalKnowledge") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "companyId", dataType = "int", required = true, value = "companyId"), }) @ApiOperation(value = "导入内部知识") public CommonResult importInternalKnowledge(MultipartFile file, Long companyId) { return CommonResult.success(internalKnowledgeService.importInternalKnowledge(companyId, file)); } } multi-system/src/main/java/com/gkhy/exam/system/domain/DTO/KnowledgeImportDTO.java
对比新文件 @@ -0,0 +1,17 @@ package com.gkhy.exam.system.domain.DTO; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; @Data public class KnowledgeImportDTO { @ExcelProperty("名称") private String name; @ExcelProperty("文件类型") //1、体系2、项目3、其他 4、技术文件 5、知识产权 6、质量服务标准 (内部知识) //1、标准2、规范3、法律法规4、其他 (外部知识) private String knowledgeType; } multi-system/src/main/java/com/gkhy/exam/system/domain/InternalKnowledge.java
@@ -43,7 +43,7 @@ @NotBlank(message = "名称不能为空") private String name; @ApiModelProperty(value ="1、体系2、项目3、其他 4、技术文件 5、知识产权 6、质量服务标准",required = true) @ApiModelProperty(value ="1、体系文件2、项目文件3、其他 4、技术文件 5、知识产权 6、质量服务标准",required = true) @TableField("knowledge_type") @NotNull(message = "类型不能为空") private Integer knowledgeType; multi-system/src/main/java/com/gkhy/exam/system/domain/StandingBook.java
@@ -67,7 +67,7 @@ @TableField(exist = false) private String personResponsibleName; @ApiModelProperty("设备类型1计算机设备2办公自动化设备3外部设备4其他") @ApiModelProperty("设备类型1计算机设备2办公自动化设备3外部设备4其他5生产设备") @TableField("device_type") @NotNull(message = "设备类型不能为空") private Integer deviceType; multi-system/src/main/java/com/gkhy/exam/system/service/ExternalKnowledgeService.java
@@ -2,10 +2,12 @@ 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.system.domain.AnnualMaintenance; import com.gkhy.exam.system.domain.ExternalKnowledge; import com.baomidou.mybatisplus.extension.service.IService; import com.gkhy.exam.system.domain.vo.AnnualMaintenanceSaveDTOReq; import org.springframework.web.multipart.MultipartFile; /** * <p> @@ -22,4 +24,6 @@ CommonResult deletedExternalKnowledge(Integer id); ImportResult importExternalKnowledge(Long companyId , MultipartFile file); } multi-system/src/main/java/com/gkhy/exam/system/service/InternalKnowledgeService.java
@@ -2,9 +2,11 @@ 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.system.domain.ExternalKnowledge; import com.gkhy.exam.system.domain.InternalKnowledge; import com.baomidou.mybatisplus.extension.service.IService; import org.springframework.web.multipart.MultipartFile; /** * <p> @@ -21,4 +23,6 @@ CommonResult deletedInternalKnowledge(Integer id); ImportResult importInternalKnowledge(Long companyId , MultipartFile file); } multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExternalKnowledgeServiceImpl.java
@@ -1,20 +1,38 @@ 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.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.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.DTO.KnowledgeImportDTO; import com.gkhy.exam.system.domain.DTO.StandingBookImportDTO; import com.gkhy.exam.system.domain.ExternalKnowledge; import com.gkhy.exam.system.domain.StandingBook; import com.gkhy.exam.system.domain.vo.DeptVo; import com.gkhy.exam.system.mapper.ExternalKnowledgeMapper; import com.gkhy.exam.system.service.ExternalKnowledgeService; 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> @@ -63,4 +81,66 @@ .set(ExternalKnowledge::getUpdateBy, SecurityUtils.getUsername())); return CommonResult.success(); } @Override @Transactional public ImportResult importExternalKnowledge(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 { // 转换为实体对象 ExternalKnowledge externalKnowledge = new ExternalKnowledge(); externalKnowledge.setName(dto.getName()); switch (dto.getKnowledgeType()) { case "标准": externalKnowledge.setKnowledgeType(1); break; case "规范": externalKnowledge.setKnowledgeType(2); break; case "法律法规": externalKnowledge.setKnowledgeType(3); break; default: externalKnowledge.setKnowledgeType(4); break; } externalKnowledge.setCompanyId(companyId); externalKnowledgeMapper.insert(externalKnowledge); 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; } } 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,73 @@ .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(0); break; } knowledge.setCompanyId(companyId); 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; } } multi-system/src/main/java/com/gkhy/exam/system/service/impl/StandingBookServiceImpl.java
@@ -23,6 +23,7 @@ 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; @@ -96,6 +97,7 @@ } @Override @Transactional public ImportResult importStandingBooks(Long companyId, MultipartFile file) { ImportResult result = new ImportResult(); result.setSuccessCount(0); @@ -139,6 +141,9 @@ case "外部设备": standingBook.setDeviceType(3); break; case "生产设备": standingBook.setDeviceType(5); break; default: standingBook.setDeviceType(4); break;