From ecb5aa1b29ccb31a215dd485e749d716220a63bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=BE=E6=96=87=E8=B1=AA?= <980287353@qq.com> Date: Mon, 26 Aug 2024 13:20:45 +0800 Subject: [PATCH] =?UTF-8?q?perf=EF=BC=9A=E8=BF=87=E7=A8=8B=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/service/UserImportHandler.java | 39 ++++++ .../template/xsxxzx_teacher_leader.xlsx | Bin 0 -> 9846 bytes .../template/TieshengTemplateHandler.java | 34 ----- .../config/template/ToolTemplateHandler.java | 54 -------- .../web/controller/comm/ToolController.java | 130 ++++++++++++++---- .../web/pojos/dao/CoreLogProcess.java | 44 +++--- .../web/pojos/imex/ExportDealDTO.java | 33 +++++ .../ImportDealDTO.java} | 22 +-- .../ImportInfoDTO.java} | 19 ++- .../tiesheng/web/pojos/imex/ImportInfoVO.java | 29 ++++ .../tiesheng/web/pojos/vo/TemplateInfoVO.java | 37 ----- .../tiesheng/web/service/CoreLogService.java | 20 +-- .../web/service/imex/DefaultImexHandler.java | 44 ++++++ .../web/service/imex/TsExportHandler.java | 19 +++ .../tiesheng/web/service/imex/TsImexBase.java | 47 +++++++ .../web/service/imex/TsImportHandler.java | 27 ++++ .../web/util/ProcessImportConsumer.java | 5 +- .../db/migration/tiesheng_init_log.sql | 3 + .../resources/mapper/CoreLogProcessMapper.xml | 2 +- 19 files changed, 398 insertions(+), 210 deletions(-) create mode 100644 springboot-ademo/src/main/java/com/tiesheng/demo/service/UserImportHandler.java create mode 100644 springboot-ademo/src/main/resources/static/template/xsxxzx_teacher_leader.xlsx delete mode 100644 springboot-web/src/main/java/com/tiesheng/web/config/template/TieshengTemplateHandler.java delete mode 100644 springboot-web/src/main/java/com/tiesheng/web/config/template/ToolTemplateHandler.java create mode 100644 springboot-web/src/main/java/com/tiesheng/web/pojos/imex/ExportDealDTO.java rename springboot-web/src/main/java/com/tiesheng/web/pojos/{dto/TemplateDealDTO.java => imex/ImportDealDTO.java} (59%) rename springboot-web/src/main/java/com/tiesheng/web/pojos/{dto/TemplateInfoDTO.java => imex/ImportInfoDTO.java} (51%) create mode 100644 springboot-web/src/main/java/com/tiesheng/web/pojos/imex/ImportInfoVO.java delete mode 100644 springboot-web/src/main/java/com/tiesheng/web/pojos/vo/TemplateInfoVO.java create mode 100644 springboot-web/src/main/java/com/tiesheng/web/service/imex/DefaultImexHandler.java create mode 100644 springboot-web/src/main/java/com/tiesheng/web/service/imex/TsExportHandler.java create mode 100644 springboot-web/src/main/java/com/tiesheng/web/service/imex/TsImexBase.java create mode 100644 springboot-web/src/main/java/com/tiesheng/web/service/imex/TsImportHandler.java diff --git a/springboot-ademo/src/main/java/com/tiesheng/demo/service/UserImportHandler.java b/springboot-ademo/src/main/java/com/tiesheng/demo/service/UserImportHandler.java new file mode 100644 index 0000000..907c3a6 --- /dev/null +++ b/springboot-ademo/src/main/java/com/tiesheng/demo/service/UserImportHandler.java @@ -0,0 +1,39 @@ +package com.tiesheng.demo.service; + +import cn.hutool.core.collection.CollUtil; +import com.tiesheng.util.pojos.TokenBean; +import com.tiesheng.web.pojos.imex.ImportDealDTO; +import com.tiesheng.web.service.imex.TsImportHandler; +import org.springframework.stereotype.Service; + +import java.util.List; + + +@Service +public class UserImportHandler implements TsImportHandler { + + @Override + public List ready(ImportDealDTO dto, TokenBean token) { + return CollUtil.newArrayList("11111"); + } + + @Override + public String getTemplateUrl() { + return "/template/xsxxzx_teacher_leader.xlsx"; + } + + @Override + public String getAction() { + return "user_import"; + } + + @Override + public int batchHandler(List list) { + return 0; + } + + @Override + public String getFailFile() { + return ""; + } +} diff --git a/springboot-ademo/src/main/resources/static/template/xsxxzx_teacher_leader.xlsx b/springboot-ademo/src/main/resources/static/template/xsxxzx_teacher_leader.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e7aa45c71afe2dbcd95c76b928962b9f631e9cd2 GIT binary patch literal 9846 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 QMSp5#f_;($kv;4EABwmPy#N3J literal 0 HcmV?d00001 diff --git a/springboot-web/src/main/java/com/tiesheng/web/config/template/TieshengTemplateHandler.java b/springboot-web/src/main/java/com/tiesheng/web/config/template/TieshengTemplateHandler.java deleted file mode 100644 index 685cf3e..0000000 --- a/springboot-web/src/main/java/com/tiesheng/web/config/template/TieshengTemplateHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.tiesheng.web.config.template; - -import com.tiesheng.web.pojos.dto.TemplateDealDTO; -import org.springframework.stereotype.Service; - -@Service -public class TieshengTemplateHandler implements ToolTemplateHandler { - @Override - public String handler(TemplateDealDTO dto) { - return ""; - } - - @Override - public String getTemplateUrl() { - return ""; - } - - @Override - public Object getParms(Object params) { - return ""; - } - - - @Override - public String getAction() { - return ""; - } - - @Override - public int getSort() { - return 0; - } - -} diff --git a/springboot-web/src/main/java/com/tiesheng/web/config/template/ToolTemplateHandler.java b/springboot-web/src/main/java/com/tiesheng/web/config/template/ToolTemplateHandler.java deleted file mode 100644 index e712269..0000000 --- a/springboot-web/src/main/java/com/tiesheng/web/config/template/ToolTemplateHandler.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.tiesheng.web.config.template; - -import cn.hutool.core.util.StrUtil; -import com.tiesheng.web.pojos.dto.TemplateDealDTO; -import org.springframework.stereotype.Service; - -@Service -public interface ToolTemplateHandler { - - - /** - * 处理对象 - * - * @param dto - * @return - */ - String handler(TemplateDealDTO dto); - - - /** - * 获取模版地址 - * - * @return - */ - String getTemplateUrl(); - - Object getParms(Object params); - - - /** - * 动作说明(唯一) - * - * @return - */ - String getAction(); - - - /** - * 排序,如果action相同,只会使用sort大的来处理 - * - * @return - */ - int getSort(); - - /** - * 获取模版ID - * - * @return - */ - default String getTeamplateId() { - return StrUtil.format("{}_{}", getAction(), getSort()); - } - -} diff --git a/springboot-web/src/main/java/com/tiesheng/web/controller/comm/ToolController.java b/springboot-web/src/main/java/com/tiesheng/web/controller/comm/ToolController.java index 945b911..34c4a13 100644 --- a/springboot-web/src/main/java/com/tiesheng/web/controller/comm/ToolController.java +++ b/springboot-web/src/main/java/com/tiesheng/web/controller/comm/ToolController.java @@ -4,19 +4,33 @@ package com.tiesheng.web.controller.comm; import cn.hutool.captcha.LineCaptcha; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.tiesheng.annotation.operation.OperationIgnore; import com.tiesheng.annotation.token.TokenIgnore; +import com.tiesheng.util.exception.ApiException; +import com.tiesheng.util.pojos.ApiResp; +import com.tiesheng.util.pojos.TokenBean; import com.tiesheng.util.service.TsCacheService; -import com.tiesheng.web.config.template.ToolTemplateHandler; -import com.tiesheng.web.pojos.dto.*; -import com.tiesheng.web.pojos.vo.TemplateInfoVO; +import com.tiesheng.web.pojos.dao.CoreLogProcess; +import com.tiesheng.web.pojos.dto.ChunkCheckDTO; +import com.tiesheng.web.pojos.dto.ChunkMergeDTO; +import com.tiesheng.web.pojos.dto.ChunkStartDTO; +import com.tiesheng.web.pojos.dto.ImageCodeDTO; +import com.tiesheng.web.pojos.imex.ExportDealDTO; +import com.tiesheng.web.pojos.imex.ImportDealDTO; +import com.tiesheng.web.pojos.imex.ImportInfoDTO; +import com.tiesheng.web.pojos.imex.ImportInfoVO; import com.tiesheng.web.pojos.vo.PicVerifyVo; +import com.tiesheng.web.service.CoreLogService; import com.tiesheng.web.service.FileUploadService; -import com.tiesheng.util.exception.ApiException; -import com.tiesheng.util.pojos.ApiResp; +import com.tiesheng.web.service.imex.TsExportHandler; +import com.tiesheng.web.service.imex.TsImportHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.validation.Valid; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -35,7 +49,11 @@ public class ToolController { @Autowired FileUploadService fileUploadService; @Autowired - List templateHandlerList; + List importHandlers; + @Autowired + List exportHandlers; + @Autowired + CoreLogService coreLogService; /** @@ -124,40 +142,102 @@ public class ToolController { } + /////////////////////////////////////////////////////////////////////////// + // import + /////////////////////////////////////////////////////////////////////////// + @TokenIgnore - @GetMapping("/template/info") - public ApiResp templateInfo(TemplateInfoDTO dto) { + @GetMapping("/imex/info") + public ApiResp importInfo(@Valid ImportInfoDTO dto) { + + ImportInfoVO template = new ImportInfoVO(); + + if (Objects.equals(dto.getType(), "import")) { + List collect = importHandlers.stream() + .filter(it -> Objects.equals(it.getAction(), dto.getAction())) + .sorted((it, it2) -> it2.getSort() - it.getSort()) + .collect(Collectors.toList()); + + if (CollUtil.isNotEmpty(collect)) { + TsImportHandler toolTemplateHandler = collect.get(0); + template.setTemplateUrl(toolTemplateHandler.getTemplateUrl()); + template.setImexId(toolTemplateHandler.getImexId()); + } + } else if (Objects.equals(dto.getType(), "export")) { + List collect = exportHandlers.stream() + .filter(it -> Objects.equals(it.getAction(), dto.getAction())) + .sorted((it, it2) -> it2.getSort() - it.getSort()) + .collect(Collectors.toList()); + + if (CollUtil.isNotEmpty(collect)) { + TsExportHandler toolTemplateHandler = collect.get(0); + template.setImexId(toolTemplateHandler.getImexId()); + } + } - List collect = templateHandlerList.stream() - .filter(it -> Objects.equals(it.getAction(), dto.getAction())) - .sorted((it, it2) -> it2.getSort() - it.getSort()) - .collect(Collectors.toList()); - if (CollUtil.isEmpty(collect)) { + if (StrUtil.isEmpty(template.getImexId())) { throw new ApiException("没有找到对应的模版"); } - ToolTemplateHandler toolTemplateHandler = collect.get(0); + return ApiResp.respOK(template); + } - TemplateInfoVO template = new TemplateInfoVO(); - template.setTemplateUrl(toolTemplateHandler.getTemplateUrl()); - template.setParams(toolTemplateHandler.getParms(dto.getParams())); - template.setTemplateId(toolTemplateHandler.getTeamplateId()); - return ApiResp.respOK(template); + @TokenIgnore + @OperationIgnore + @PostMapping("/import/deal") + public ApiResp importDeal(@RequestBody @Valid ImportDealDTO dto, TokenBean token) { + + List collect = importHandlers.stream(). + filter(it -> Objects.equals(it.getImexId(), dto.getImexId())) + .collect(Collectors.toList()); + if (CollUtil.isEmpty(collect)) { + throw new ApiException("导入ID不存在"); + } + + TsImportHandler tsImportHandler = collect.get(0); + tsImportHandler.validToken(token); + List read = tsImportHandler.ready(dto, token); + if (CollUtil.isEmpty(read)) { + throw new ApiException("没有数据可以导入"); + } + CoreLogProcess coreLogProcess = coreLogService.addProcess(tsImportHandler.getImexId(), read, tsImportHandler); + coreLogProcess.setParams(JSON.toJSONString(dto)); + coreLogService.getCoreLogProcessMapper().updateById(coreLogProcess); + + return ApiResp.respOK(coreLogProcess.getId()); } + + /////////////////////////////////////////////////////////////////////////// + // export + /////////////////////////////////////////////////////////////////////////// + @TokenIgnore - @PostMapping("/template/deal") - public ApiResp templateDeal(@RequestBody TemplateDealDTO dto) { + @OperationIgnore + @PostMapping("/export/deal") + public ApiResp exportDeal(@RequestBody @Valid ExportDealDTO dto, TokenBean token) { - List collect = templateHandlerList.stream(). - filter(it -> Objects.equals(it.getTeamplateId(), dto.getTemplateId())) + List collect = exportHandlers.stream(). + filter(it -> Objects.equals(it.getImexId(), dto.getImexId())) .collect(Collectors.toList()); if (CollUtil.isEmpty(collect)) { - throw new ApiException("模版ID不存在"); + throw new ApiException("导出ID不存在"); } - return ApiResp.respOK(collect.get(0).handler(dto)); + TsExportHandler tsExportHandler = collect.get(0); + tsExportHandler.validToken(token); + List read = tsExportHandler.ready(dto, token); + if (CollUtil.isEmpty(read)) { + throw new ApiException("没有数据可以导出"); + } + CoreLogProcess coreLogProcess = coreLogService.addProcess(tsExportHandler.getImexId(), read, tsExportHandler); + coreLogProcess.setType("export"); + coreLogProcess.setParams(JSON.toJSONString(dto)); + coreLogService.getCoreLogProcessMapper().updateById(coreLogProcess); + + return ApiResp.respOK(coreLogProcess.getId()); } + } diff --git a/springboot-web/src/main/java/com/tiesheng/web/pojos/dao/CoreLogProcess.java b/springboot-web/src/main/java/com/tiesheng/web/pojos/dao/CoreLogProcess.java index 285638c..ab8841f 100644 --- a/springboot-web/src/main/java/com/tiesheng/web/pojos/dao/CoreLogProcess.java +++ b/springboot-web/src/main/java/com/tiesheng/web/pojos/dao/CoreLogProcess.java @@ -51,18 +51,18 @@ public class CoreLogProcess extends DaoBase { @TableField(value = "fail_file") private String failFile; - /** - * 异常说明 - */ - @TableField(value = "error") - private String error; - /** * 进度 */ @TableField(value = "`process`") private Integer process; + /** + * 异常说明 + */ + @TableField(value = "params") + private String params; + /** * 获取标题 * @@ -190,38 +190,38 @@ public class CoreLogProcess extends DaoBase { } /** - * 获取异常说明 + * 获取进度 * - * @return error - 异常说明 + * @return process - 进度 */ - public String getError() { - return error; + public Integer getProcess() { + return process; } /** - * 设置异常说明 + * 设置进度 * - * @param error 异常说明 + * @param process 进度 */ - public void setError(String error) { - this.error = error; + public void setProcess(Integer process) { + this.process = process; } /** - * 获取进度 + * 获取异常说明 * - * @return process - 进度 + * @return params - 异常说明 */ - public Integer getProcess() { - return process; + public String getParams() { + return params; } /** - * 设置进度 + * 设置异常说明 * - * @param process 进度 + * @param params 异常说明 */ - public void setProcess(Integer process) { - this.process = process; + public void setParams(String params) { + this.params = params; } } diff --git a/springboot-web/src/main/java/com/tiesheng/web/pojos/imex/ExportDealDTO.java b/springboot-web/src/main/java/com/tiesheng/web/pojos/imex/ExportDealDTO.java new file mode 100644 index 0000000..1306ed6 --- /dev/null +++ b/springboot-web/src/main/java/com/tiesheng/web/pojos/imex/ExportDealDTO.java @@ -0,0 +1,33 @@ +package com.tiesheng.web.pojos.imex; + +import com.alibaba.fastjson.JSONObject; + +import javax.validation.constraints.NotEmpty; + +public class ExportDealDTO { + + @NotEmpty(message = "模版ID") + private String imexId; + private JSONObject params; + + /////////////////////////////////////////////////////////////////////////// + // setter\getter + /////////////////////////////////////////////////////////////////////////// + + + public String getImexId() { + return imexId; + } + + public void setImexId(String imexId) { + this.imexId = imexId; + } + + public JSONObject getParams() { + return params; + } + + public void setParams(JSONObject params) { + this.params = params; + } +} diff --git a/springboot-web/src/main/java/com/tiesheng/web/pojos/dto/TemplateDealDTO.java b/springboot-web/src/main/java/com/tiesheng/web/pojos/imex/ImportDealDTO.java similarity index 59% rename from springboot-web/src/main/java/com/tiesheng/web/pojos/dto/TemplateDealDTO.java rename to springboot-web/src/main/java/com/tiesheng/web/pojos/imex/ImportDealDTO.java index 4db6a04..a81e9c5 100644 --- a/springboot-web/src/main/java/com/tiesheng/web/pojos/dto/TemplateDealDTO.java +++ b/springboot-web/src/main/java/com/tiesheng/web/pojos/imex/ImportDealDTO.java @@ -1,25 +1,27 @@ -package com.tiesheng.web.pojos.dto; +package com.tiesheng.web.pojos.imex; + +import com.alibaba.fastjson.JSONObject; import javax.validation.constraints.NotEmpty; -public class TemplateDealDTO { +public class ImportDealDTO { @NotEmpty(message = "模版ID") - private String templateId; + private String imexId; @NotEmpty(message = "文件路径必填") private String file; - private Object params; + private JSONObject params; /////////////////////////////////////////////////////////////////////////// // setter\getter /////////////////////////////////////////////////////////////////////////// - public String getTemplateId() { - return templateId; + public String getImexId() { + return imexId; } - public void setTemplateId(String templateId) { - this.templateId = templateId; + public void setImexId(String imexId) { + this.imexId = imexId; } public String getFile() { @@ -30,11 +32,11 @@ public class TemplateDealDTO { this.file = file; } - public Object getParams() { + public JSONObject getParams() { return params; } - public void setParams(Object params) { + public void setParams(JSONObject params) { this.params = params; } } diff --git a/springboot-web/src/main/java/com/tiesheng/web/pojos/dto/TemplateInfoDTO.java b/springboot-web/src/main/java/com/tiesheng/web/pojos/imex/ImportInfoDTO.java similarity index 51% rename from springboot-web/src/main/java/com/tiesheng/web/pojos/dto/TemplateInfoDTO.java rename to springboot-web/src/main/java/com/tiesheng/web/pojos/imex/ImportInfoDTO.java index b5786f4..2484af3 100644 --- a/springboot-web/src/main/java/com/tiesheng/web/pojos/dto/TemplateInfoDTO.java +++ b/springboot-web/src/main/java/com/tiesheng/web/pojos/imex/ImportInfoDTO.java @@ -1,10 +1,15 @@ -package com.tiesheng.web.pojos.dto; +package com.tiesheng.web.pojos.imex; -public class TemplateInfoDTO { +import javax.validation.constraints.NotEmpty; +public class ImportInfoDTO { + + @NotEmpty(message = "操作必须存在") private String action; - private Object params; + + @NotEmpty(message = "类型必须存在") + private String type; /////////////////////////////////////////////////////////////////////////// // setter\getter @@ -18,11 +23,11 @@ public class TemplateInfoDTO { this.action = action; } - public Object getParams() { - return params; + public String getType() { + return type; } - public void setParams(Object params) { - this.params = params; + public void setType(String type) { + this.type = type; } } diff --git a/springboot-web/src/main/java/com/tiesheng/web/pojos/imex/ImportInfoVO.java b/springboot-web/src/main/java/com/tiesheng/web/pojos/imex/ImportInfoVO.java new file mode 100644 index 0000000..96901af --- /dev/null +++ b/springboot-web/src/main/java/com/tiesheng/web/pojos/imex/ImportInfoVO.java @@ -0,0 +1,29 @@ +package com.tiesheng.web.pojos.imex; + + +public class ImportInfoVO { + + private String imexId; + private String templateUrl; + + /////////////////////////////////////////////////////////////////////////// + // setter\getter + /////////////////////////////////////////////////////////////////////////// + + public String getImexId() { + return imexId; + } + + public void setImexId(String imexId) { + this.imexId = imexId; + } + + public String getTemplateUrl() { + return templateUrl; + } + + public void setTemplateUrl(String templateUrl) { + this.templateUrl = templateUrl; + } + +} diff --git a/springboot-web/src/main/java/com/tiesheng/web/pojos/vo/TemplateInfoVO.java b/springboot-web/src/main/java/com/tiesheng/web/pojos/vo/TemplateInfoVO.java deleted file mode 100644 index 1e8ae89..0000000 --- a/springboot-web/src/main/java/com/tiesheng/web/pojos/vo/TemplateInfoVO.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.tiesheng.web.pojos.vo; - - -public class TemplateInfoVO { - - private String templateId; - private String templateUrl; - private Object params; - - /////////////////////////////////////////////////////////////////////////// - // setter\getter - /////////////////////////////////////////////////////////////////////////// - - public String getTemplateId() { - return templateId; - } - - public void setTemplateId(String templateId) { - this.templateId = templateId; - } - - public String getTemplateUrl() { - return templateUrl; - } - - public void setTemplateUrl(String templateUrl) { - this.templateUrl = templateUrl; - } - - public Object getParams() { - return params; - } - - public void setParams(Object params) { - this.params = params; - } -} diff --git a/springboot-web/src/main/java/com/tiesheng/web/service/CoreLogService.java b/springboot-web/src/main/java/com/tiesheng/web/service/CoreLogService.java index 9577943..77ec63e 100644 --- a/springboot-web/src/main/java/com/tiesheng/web/service/CoreLogService.java +++ b/springboot-web/src/main/java/com/tiesheng/web/service/CoreLogService.java @@ -79,33 +79,24 @@ public class CoreLogService extends TsServiceBase { - List errorList = new ArrayList<>(); CollUtil.split(list, 100).forEach((it) -> { - int accept = 0; - try { - accept = consumer.accept(it); - } catch (Exception e) { - errorList.add(e); - } + int accept = consumer.batchHandler(it); coreLogProcess.setProcess(coreLogProcess.getProcess() + it.size()); coreLogProcess.setSuccessNum(coreLogProcess.getSuccessNum() + accept); coreLogProcess.setFailNum(coreLogProcess.getFailNum() + it.size() - accept); - coreLogProcess.setError(JSON.toJSONString(errorList)); coreLogProcessMapper.updateById(coreLogProcess); }); // 执行结束 coreLogProcess.setFailFile(consumer.getFailFile()); coreLogProcess.setStatus(1); - coreLogProcess.setError(JSON.toJSONString(errorList)); coreLogProcessMapper.updateById(coreLogProcess); }); - return coreLogProcess; } @@ -126,29 +117,24 @@ public class CoreLogService extends TsServiceBase { int pageSize = 1000; int pageNum = 1, lastCount = pageSize; - List errorList = new ArrayList<>(); while (lastCount == pageSize) { try { lastCount = consumer.accept(pageNum, pageSize); coreLogProcess.setTotal(coreLogProcess.getTotal() + lastCount); coreLogProcess.setProcess(coreLogProcess.getTotal()); - coreLogProcess.setError(JSON.toJSONString(errorList)); coreLogProcess.setSuccessNum(coreLogProcess.getSuccessNum() + lastCount); - } catch (Exception e) { - errorList.add(e); + } catch (Exception ignored) { } coreLogProcessMapper.updateById(coreLogProcess); pageNum++; } // 执行结束 - coreLogProcess.setError(JSON.toJSONString(errorList)); coreLogProcess.setStatus(1); coreLogProcessMapper.updateById(coreLogProcess); }); diff --git a/springboot-web/src/main/java/com/tiesheng/web/service/imex/DefaultImexHandler.java b/springboot-web/src/main/java/com/tiesheng/web/service/imex/DefaultImexHandler.java new file mode 100644 index 0000000..07c9e76 --- /dev/null +++ b/springboot-web/src/main/java/com/tiesheng/web/service/imex/DefaultImexHandler.java @@ -0,0 +1,44 @@ +package com.tiesheng.web.service.imex; + +import cn.hutool.core.collection.CollUtil; +import com.tiesheng.util.pojos.TokenBean; +import com.tiesheng.web.pojos.imex.ExportDealDTO; +import com.tiesheng.web.pojos.imex.ImportDealDTO; +import org.springframework.stereotype.Service; + +import java.util.List; + + +@Service +public class DefaultImexHandler implements TsImportHandler, TsExportHandler { + + @Override + public List ready(ExportDealDTO dto, TokenBean token) { + return CollUtil.newArrayList(); + } + + @Override + public List ready(ImportDealDTO dto, TokenBean token) { + return CollUtil.newArrayList(); + } + + @Override + public String getTemplateUrl() { + return ""; + } + + @Override + public String getAction() { + return ""; + } + + @Override + public int batchHandler(List list) { + return 0; + } + + @Override + public String getFailFile() { + return ""; + } +} diff --git a/springboot-web/src/main/java/com/tiesheng/web/service/imex/TsExportHandler.java b/springboot-web/src/main/java/com/tiesheng/web/service/imex/TsExportHandler.java new file mode 100644 index 0000000..2b84cbb --- /dev/null +++ b/springboot-web/src/main/java/com/tiesheng/web/service/imex/TsExportHandler.java @@ -0,0 +1,19 @@ +package com.tiesheng.web.service.imex; + +import com.tiesheng.util.pojos.TokenBean; +import com.tiesheng.web.pojos.imex.ExportDealDTO; + +import java.util.List; + +public interface TsExportHandler extends TsImexBase { + + + /** + * 数据准备中 + * + * @return + */ + List ready(ExportDealDTO dto, TokenBean token); + + +} diff --git a/springboot-web/src/main/java/com/tiesheng/web/service/imex/TsImexBase.java b/springboot-web/src/main/java/com/tiesheng/web/service/imex/TsImexBase.java new file mode 100644 index 0000000..ffa5d27 --- /dev/null +++ b/springboot-web/src/main/java/com/tiesheng/web/service/imex/TsImexBase.java @@ -0,0 +1,47 @@ +package com.tiesheng.web.service.imex; + +import cn.hutool.core.util.StrUtil; +import com.tiesheng.util.exception.ApiException; +import com.tiesheng.util.pojos.TokenBean; +import com.tiesheng.web.util.ProcessImportConsumer; + +public interface TsImexBase extends ProcessImportConsumer { + + /** + * 动作说明(唯一) + * + * @return + */ + String getAction(); + + /** + * 排序,如果action相同,只会使用sort大的来处理 + * + * @return + */ + default int getSort() { + return 0; + } + + /** + * 验证是否登录 + * + * @param tokenBean + */ + default void validToken(TokenBean tokenBean) { + if (tokenBean == null || StrUtil.isEmpty(tokenBean.getId())) { + throw new ApiException("请先登录"); + } + } + + + /** + * 获取模版ID + * + * @return + */ + default String getImexId() { + return StrUtil.format("{}_{}", getAction(), getSort()); + } + +} diff --git a/springboot-web/src/main/java/com/tiesheng/web/service/imex/TsImportHandler.java b/springboot-web/src/main/java/com/tiesheng/web/service/imex/TsImportHandler.java new file mode 100644 index 0000000..b809e89 --- /dev/null +++ b/springboot-web/src/main/java/com/tiesheng/web/service/imex/TsImportHandler.java @@ -0,0 +1,27 @@ +package com.tiesheng.web.service.imex; + +import com.tiesheng.util.pojos.TokenBean; +import com.tiesheng.web.pojos.imex.ImportDealDTO; + +import java.util.List; + +public interface TsImportHandler extends TsImexBase { + + + /** + * 读取文件内容 + * + * @param dto + * @return + */ + List ready(ImportDealDTO dto, TokenBean token); + + + /** + * 获取模版地址 + * + * @return + */ + String getTemplateUrl(); + +} diff --git a/springboot-web/src/main/java/com/tiesheng/web/util/ProcessImportConsumer.java b/springboot-web/src/main/java/com/tiesheng/web/util/ProcessImportConsumer.java index d6eb914..fff8125 100644 --- a/springboot-web/src/main/java/com/tiesheng/web/util/ProcessImportConsumer.java +++ b/springboot-web/src/main/java/com/tiesheng/web/util/ProcessImportConsumer.java @@ -6,13 +6,12 @@ public interface ProcessImportConsumer { /** - * 处理数据 + * 分批处理 * * @param list - * @param * @return 返回成功的数量 */ - int accept(List list); + int batchHandler(List list); /** 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 08c988f..e5179fb 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 @@ -72,4 +72,7 @@ CREATE TABLE `core_log_operation` DEFAULT CHARSET = utf8mb4 COMMENT ='日志-操作'; +alter table core_log_process + modify params longtext null comment '异常说明'; + SET FOREIGN_KEY_CHECKS = 1; diff --git a/springboot-web/src/main/resources/mapper/CoreLogProcessMapper.xml b/springboot-web/src/main/resources/mapper/CoreLogProcessMapper.xml index afe007e..0f69867 100644 --- a/springboot-web/src/main/resources/mapper/CoreLogProcessMapper.xml +++ b/springboot-web/src/main/resources/mapper/CoreLogProcessMapper.xml @@ -15,8 +15,8 @@ - +