From c708809a19de7f69ee8a5e5dc00b92153beeffe1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=BE=E6=96=87=E8=B1=AA?= <980287353@qq.com> Date: Wed, 5 Apr 2023 23:36:51 +0800 Subject: [PATCH] =?UTF-8?q?perf=EF=BC=9A=E7=99=BB=E5=BD=95=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E8=BF=9B=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/pojos/dao/CoreLogProcess.java | 17 ++++++- .../core/pojos/vo/ProcessDetailVo.java | 10 ++++ .../tiesheng/core/service/CoreLogService.java | 50 +++++++++++++------ .../core/util/LogProcessConsumer.java | 27 ++++++++++ .../db/migration/tiesheng_init_log.sql | 6 +++ .../resources/mapper/CoreLogProcessMapper.xml | 7 +-- 6 files changed, 97 insertions(+), 20 deletions(-) create mode 100644 springboot-web/src/main/java/com/tiesheng/core/util/LogProcessConsumer.java diff --git a/springboot-web/src/main/java/com/tiesheng/core/pojos/dao/CoreLogProcess.java b/springboot-web/src/main/java/com/tiesheng/core/pojos/dao/CoreLogProcess.java index 2324a44..f00da2a 100644 --- a/springboot-web/src/main/java/com/tiesheng/core/pojos/dao/CoreLogProcess.java +++ b/springboot-web/src/main/java/com/tiesheng/core/pojos/dao/CoreLogProcess.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.tiesheng.core.pojos.DaoBase; + import java.util.Date; /** @@ -36,6 +37,12 @@ public class CoreLogProcess extends DaoBase { @TableField(value = "fail_num") private Integer failNum; + /** + * 失败的文件 + */ + @TableField(value = "fail_file") + private String failFile; + /** * 类型(import-导入,sync-同步) */ @@ -120,6 +127,14 @@ public class CoreLogProcess extends DaoBase { this.failNum = failNum; } + public String getFailFile() { + return failFile; + } + + public void setFailFile(String failFile) { + this.failFile = failFile; + } + /** * 获取类型(import-导入,sync-同步) * @@ -155,4 +170,4 @@ public class CoreLogProcess extends DaoBase { public void setStatus(Integer status) { this.status = status; } -} \ No newline at end of file +} diff --git a/springboot-web/src/main/java/com/tiesheng/core/pojos/vo/ProcessDetailVo.java b/springboot-web/src/main/java/com/tiesheng/core/pojos/vo/ProcessDetailVo.java index 0a7351f..6202a38 100644 --- a/springboot-web/src/main/java/com/tiesheng/core/pojos/vo/ProcessDetailVo.java +++ b/springboot-web/src/main/java/com/tiesheng/core/pojos/vo/ProcessDetailVo.java @@ -17,6 +17,8 @@ public class ProcessDetailVo { private Integer status; + private String failFile; + public Integer getStatus() { return status; } @@ -64,4 +66,12 @@ public class ProcessDetailVo { public void setType(String type) { this.type = type; } + + public String getFailFile() { + return failFile; + } + + public void setFailFile(String failFile) { + this.failFile = failFile; + } } diff --git a/springboot-web/src/main/java/com/tiesheng/core/service/CoreLogService.java b/springboot-web/src/main/java/com/tiesheng/core/service/CoreLogService.java index 6ac8cb3..9f3fbf3 100644 --- a/springboot-web/src/main/java/com/tiesheng/core/service/CoreLogService.java +++ b/springboot-web/src/main/java/com/tiesheng/core/service/CoreLogService.java @@ -1,6 +1,8 @@ package com.tiesheng.core.service; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.servlet.ServletUtil; import cn.hutool.json.JSONUtil; @@ -15,6 +17,7 @@ import com.tiesheng.core.pojos.dao.CoreLogOperation; import com.tiesheng.core.pojos.dao.CoreLogProcess; import com.tiesheng.core.pojos.dao.CorePlatformUnique; import com.tiesheng.core.pojos.vo.ProcessDetailVo; +import com.tiesheng.core.util.LogProcessConsumer; import com.tiesheng.login.config.token.TsTokenConfig; import com.tiesheng.login.config.token.bean.TokenBean; import com.tiesheng.util.ServletKit; @@ -24,6 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; +import java.util.List; /** * @author hao @@ -53,38 +57,48 @@ public class CoreLogService extends TsServiceBase CoreLogProcess addProcess(String title, String type, List list, LogProcessConsumer consumer) { + if (CollUtil.isEmpty(list)) { + throw new ApiException("文件中不存在数据"); + } CoreLogProcess coreLogProcess = new CoreLogProcess(); coreLogProcess.setTitle(title); - coreLogProcess.setTotal(total); + coreLogProcess.setTotal(list.size()); coreLogProcess.setType(type); + coreLogProcess.setSuccessNum(0); + coreLogProcess.setFailNum(0); coreLogProcessMapper.insert(coreLogProcess); + + ThreadUtil.execute(() -> { + CollUtil.split(list, 100).forEach((it) -> { + int accept = consumer.accept(coreLogProcess, it); + coreLogProcess.setSuccessNum(coreLogProcess.getSuccessNum() + accept); + coreLogProcess.setFailNum(coreLogProcess.getFailNum() + 100 - accept); + + if (it.size() != 100) { + coreLogProcess.setFailFile(consumer.getFailFile()); + } + + coreLogProcessMapper.updateById(coreLogProcess); + }); + }); + + return coreLogProcess; } - /** - * 更新过程 - * - * @param coreLogProcess 过程对象 - */ - public void upProcess(CoreLogProcess coreLogProcess) { - if (coreLogProcess == null || coreLogProcess.getId().isEmpty()) { - throw new ApiException("更新过程id不能为空"); - } - coreLogProcessMapper.updateById(coreLogProcess); - } /** * 根据id 获取过程详情 @@ -96,6 +110,10 @@ public class CoreLogService extends TsServiceBase + * @return 返回成功的数量 + */ + int accept(CoreLogProcess process, List list); + + + /** + * 获取失败的文件路径 + * + * @return + */ + String getFailFile(); + +} diff --git a/springboot-web/src/main/resources/db/migration/tiesheng_init_log.sql b/springboot-web/src/main/resources/db/migration/tiesheng_init_log.sql index 69e0b00..289c5e2 100644 --- a/springboot-web/src/main/resources/db/migration/tiesheng_init_log.sql +++ b/springboot-web/src/main/resources/db/migration/tiesheng_init_log.sql @@ -61,6 +61,12 @@ CREATE TABLE `core_log_process` ALTER TABLE core_log_process ADD status int(6) default 0 COMMENT '状态(0-未完成,1-已完成)'; +ALTER TABLE core_log_process + ADD fail_file varchar(500) null default null COMMENT '失败的文件'; + +-- ---------------------------- +-- Table structure for core_log_operation +-- ---------------------------- CREATE TABLE `core_log_operation` ( diff --git a/springboot-web/src/main/resources/mapper/CoreLogProcessMapper.xml b/springboot-web/src/main/resources/mapper/CoreLogProcessMapper.xml index fca6444..223042d 100644 --- a/springboot-web/src/main/resources/mapper/CoreLogProcessMapper.xml +++ b/springboot-web/src/main/resources/mapper/CoreLogProcessMapper.xml @@ -14,10 +14,11 @@ + - id, create_time, update_time, is_deleted, title, total, success_num, fail_num, `type`, - `status` + id, create_time, update_time, is_deleted, title, total, success_num, fail_num, `type`, + `status`, fail_file - \ No newline at end of file +