diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/PerformanceManagementController.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/PerformanceManagementController.java index 7e4e8a8..3b80993 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/PerformanceManagementController.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/PerformanceManagementController.java @@ -1,11 +1,16 @@ package org.dromara.platform.controller; +import java.io.IOException; import java.util.List; +import com.alibaba.excel.EasyExcel; import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; +import lombok.extern.slf4j.Slf4j; +import org.dromara.platform.domain.PerformanceManagement; +import org.dromara.platform.listener.PerformanceManagementListener; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -21,6 +26,7 @@ import org.dromara.platform.domain.vo.PerformanceManagementVo; import org.dromara.platform.domain.bo.PerformanceManagementBo; import org.dromara.platform.service.IPerformanceManagementService; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.springframework.web.multipart.MultipartFile; /** * 考核管理 @@ -31,6 +37,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; @Validated @RequiredArgsConstructor @RestController +@Slf4j @RequestMapping("/platform/management") public class PerformanceManagementController extends BaseController { @@ -102,4 +109,17 @@ public class PerformanceManagementController extends BaseController { @PathVariable String[] ids) { return toAjax(performanceManagementService.deleteWithValidByIds(List.of(ids), true)); } + + + @PostMapping("/uploadFromExcel") + public void uploadPerformanceManagement(MultipartFile file, HttpServletResponse response) throws IOException { + long t1 = System.currentTimeMillis(); + + EasyExcel.read(file.getInputStream(), PerformanceManagement.class, new PerformanceManagementListener(performanceManagementService)).sheet().doRead(); + + response.setContentType("text/html;charset=utf8"); + long t2 = System.currentTimeMillis(); + response.getWriter().println("导入数据成功!,共用时:"+(t2-t1)+"ms"); + log.info("导入考核项目成功! 共用时:{}ms",(t2-t1)); + } } diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/TestController.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/TestController.java index 129761c..92a7e85 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/TestController.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/TestController.java @@ -5,8 +5,11 @@ import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.dromara.platform.domain.PerformanceManagement; import org.dromara.platform.domain.ProjectManager; +import org.dromara.platform.listener.PerformanceManagementListener; import org.dromara.platform.listener.ProjectManagerListener; +import org.dromara.platform.service.IPerformanceManagementService; import org.dromara.platform.service.ProjectManagerService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -67,4 +70,19 @@ public class TestController { .sheet("项目联系人信息"+currentDate) .doWrite(projectManagerService.getData()); } + + @Resource + private IPerformanceManagementService performanceManagementService; + + @PostMapping("/uploadPerformanceManagement") + public void uploadPerformanceManagement(MultipartFile file, HttpServletResponse response) throws IOException { + long t1 = System.currentTimeMillis(); + + EasyExcel.read(file.getInputStream(), PerformanceManagement.class, new PerformanceManagementListener(performanceManagementService)).sheet().doRead(); + + response.setContentType("text/html;charset=utf8"); + long t2 = System.currentTimeMillis(); + response.getWriter().println("导入数据成功!,共用时:"+(t2-t1)); + log.info("导入项目负责人数据成功! 共用时:{}ms",(t2-t1)); + } } diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/NoticeInfo.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/NoticeInfo.java index 50b4c9c..de61923 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/NoticeInfo.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/NoticeInfo.java @@ -57,6 +57,8 @@ public class NoticeInfo extends TenantEntity { */ private String attachment; + private String fileName; + /** * 当前状态 */ diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/PerformanceManagement.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/PerformanceManagement.java index e5d992d..5b91a09 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/PerformanceManagement.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/PerformanceManagement.java @@ -1,5 +1,7 @@ package org.dromara.platform.domain; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; import org.dromara.common.tenant.core.TenantEntity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; @@ -24,42 +26,50 @@ public class PerformanceManagement extends TenantEntity { /** * 唯一标识符 */ + @ExcelIgnore @TableId(value = "id") private String id; /** - * 类型 + * 类型(暂未使用) */ + @ExcelIgnore private String type; /** * 评分大类 */ + @ExcelProperty("评分大类") private String largeRating; /** * 评分小类 */ + @ExcelProperty("评分小类") private String smallRating; /** * 分值 */ + @ExcelProperty("分值") private Long rating; /** * 扣分标准 */ + @ExcelProperty("扣分标准") private String standards; /** - * 考核类型 + * */ + @ExcelProperty("考核类型") private String checkType; /** * 当前状态 */ + @ExcelIgnore private Long status; /** diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/NoticeInfoBo.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/NoticeInfoBo.java index 2c74d62..177a32d 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/NoticeInfoBo.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/NoticeInfoBo.java @@ -44,6 +44,7 @@ public class NoticeInfoBo extends BaseEntity { @NotBlank(message = "类型不能为空", groups = { AddGroup.class, EditGroup.class }) private String type; + private String fileName; /** * 操作人 */ diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/NoticeInfoVo.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/NoticeInfoVo.java index 72a65f5..2f2a112 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/NoticeInfoVo.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/NoticeInfoVo.java @@ -82,7 +82,7 @@ public class NoticeInfoVo implements Serializable { * 创建者 */ private Long createBy; - + private String fileName; /** * 创建时间 */ diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/listener/PerformanceManagementListener.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/listener/PerformanceManagementListener.java new file mode 100644 index 0000000..175c10e --- /dev/null +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/listener/PerformanceManagementListener.java @@ -0,0 +1,68 @@ +package org.dromara.platform.listener; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.listener.ReadListener; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.dromara.platform.domain.PerformanceManagement; +import org.dromara.platform.domain.ProjectManager; +import org.dromara.platform.mapper.PerformanceManagementMapper; +import org.dromara.platform.service.IPerformanceManagementService; +import org.dromara.platform.service.ProjectManagerService; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.ArrayList; +import java.util.List; + +/** + * 自定义监听器读数据 + * @author gjh + */ +@Slf4j +public class PerformanceManagementListener implements ReadListener { + + private List list = new ArrayList<>(); + /** + * 自己定义一个缓冲量 + */ + private static final int BATCH_COUNT = 20; + @Resource + private PerformanceManagementMapper performanceManagementMapper; + + @Resource + private IPerformanceManagementService performanceManagementService; + + public PerformanceManagementListener(IPerformanceManagementService performanceManagementService) { + this.performanceManagementService = performanceManagementService; + } + + /** + * 每读一行数据都会调用这个方法 + * + * @param performanceManagement + * @param analysisContext + */ + @Override + public void invoke(PerformanceManagement performanceManagement, AnalysisContext analysisContext) { + // 读取一行数据就添加到集合 + list.add(performanceManagement); + // 判断是否到达缓存量了 + if (list.size() >= BATCH_COUNT){ + // 操作数据库 + performanceManagementService.addData(list); + list = new ArrayList<>(BATCH_COUNT); + } + } + + /** + * 读完整个excel之后再调用这个方法 + * + * @param analysisContext + */ + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + if (list.size()>0){ + performanceManagementService.addData(list); + } + } +} diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IPerformanceManagementService.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IPerformanceManagementService.java index 1157717..2f6e14a 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IPerformanceManagementService.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IPerformanceManagementService.java @@ -1,5 +1,8 @@ package org.dromara.platform.service; +import org.dromara.platform.domain.AgreementInfo; +import org.dromara.platform.domain.PerformanceManagement; +import org.dromara.platform.domain.ProjectManager; import org.dromara.platform.domain.vo.PerformanceManagementVo; import org.dromara.platform.domain.bo.PerformanceManagementBo; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -65,4 +68,7 @@ public interface IPerformanceManagementService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + + void addData(List list); } diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/PerformanceManagementServiceImpl.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/PerformanceManagementServiceImpl.java index f88f2ab..1a18674 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/PerformanceManagementServiceImpl.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/PerformanceManagementServiceImpl.java @@ -132,4 +132,11 @@ public class PerformanceManagementServiceImpl implements IPerformanceManagementS } return baseMapper.deleteByIds(ids) > 0; } + + @Override + public void addData(List list) { + baseMapper.insert(list); + } + + }