heheng
2025-10-14 93565578181199248beda6f610d95d07b261630e
修改修复问题
已添加1个文件
已修改9个文件
220 ■■■■■ 文件已修改
multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/ExternalKnowledgeController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/InternalKnowledgeController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/domain/DTO/KnowledgeImportDTO.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/domain/InternalKnowledge.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/domain/StandingBook.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/service/ExternalKnowledgeService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/service/InternalKnowledgeService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExternalKnowledgeServiceImpl.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalKnowledgeServiceImpl.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/service/impl/StandingBookServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;