From 183574e72a123ddf95eeecd0dbd1597e1b1c783d Mon Sep 17 00:00:00 2001 From: "daikun1@bosssoft.com.cn" Date: Thu, 2 Nov 2023 15:09:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF-->=E6=B7=BB=E5=8A=A0=E4=B8=8B=E8=BD=BD=E5=AF=BC?= =?UTF-8?q?=E5=87=BAxx=E5=9F=BA=E7=A1=80=E4=BF=A1=E6=81=AF=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E3=80=81=E5=AF=BC=E5=85=A5xx=E5=9F=BA=E6=9C=AC?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../codegen/java/controller/controller.vm | 34 +++++++++++++++++++ .../resources/codegen/java/service/service.vm | 9 +++++ .../codegen/java/service/serviceImpl.vm | 24 +++++++++++++ .../resources/codegen/vue3/views/index.vue.vm | 2 +- 4 files changed, 68 insertions(+), 1 deletion(-) diff --git a/win-module-infra/win-module-infra-biz/src/main/resources/codegen/java/controller/controller.vm b/win-module-infra/win-module-infra-biz/src/main/resources/codegen/java/controller/controller.vm index a8c1f62c..18329cb5 100644 --- a/win-module-infra/win-module-infra-biz/src/main/resources/codegen/java/controller/controller.vm +++ b/win-module-infra/win-module-infra-biz/src/main/resources/codegen/java/controller/controller.vm @@ -108,4 +108,38 @@ public class ${sceneEnum.prefixClass}${table.className}Controller { ExcelUtils.write(response, "${table.classComment}.xls", "数据", ${sceneEnum.prefixClass}${table.className}ExcelVO.class, datas); } + @GetMapping("/get-import-template") + @Operation(summary = "获得导入${table.classComment}模板") + public void importTemplate(HttpServletResponse response) throws IOException { + List<${table.className}ExcelVO> list = Arrays.asList(); + // 输出 + ExcelUtils.write(response, "${table.classComment}基本信息导入模板.xls", "${table.classComment}基本信息列表", ${table.className}ExcelVo.class, list); + } + + @PostMapping("/import") + @Operation(summary = "导入${table.classComment}基本信息") + @Parameters({ + @Parameter(name = "file", description = "Excel 文件", required = true), + @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), + @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") + }) + #if ($sceneEnum.scene == 1) @PreAuthorize("@ss.hasPermission('${permissionPrefix}:import')")#end + + public CommonResult> importExcel(HttpServletResponse response, + @RequestParam("file") MultipartFile file, + @RequestParam(value = "mode") Integer mode, + @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { + + List<${table.className}ExcelVO> list = ExcelUtils.read(file, ${table.className}ExcelVO.class); + List<${table.className}ExcelVO> errorList = ${classNameVar}Service.import${table.className}List(list, mode, updatePart); + + Map returnMap = new HashMap<>(); + returnMap.put("errorCount", errorList.size()); + if(!errorList.isEmpty()) { + String url = ExcelUtils.writeLocalFile("${table.classComment}基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList); + returnMap.put("errorFile", url); + } + + return success(returnMap); + } } diff --git a/win-module-infra/win-module-infra-biz/src/main/resources/codegen/java/service/service.vm b/win-module-infra/win-module-infra-biz/src/main/resources/codegen/java/service/service.vm index b8c63769..0d41403c 100644 --- a/win-module-infra/win-module-infra-biz/src/main/resources/codegen/java/service/service.vm +++ b/win-module-infra/win-module-infra-biz/src/main/resources/codegen/java/service/service.vm @@ -67,4 +67,13 @@ public interface ${table.className}Service { */ List<${table.className}DO> get${simpleClassName}List(${sceneEnum.prefixClass}${table.className}ExportReqVO exportReqVO); + /** + * 导入${table.classComment}主信息 + * + * @param datas 导入${table.classComment}主信息列表 + * @param mode 导入模式1更新2追加3覆盖 + * @param updatePart 是否支持更新 + * @return 导入结果 + */ + public List<${table.className}ExcelVO> import${table.className}List(List<${table.className}ExcelVO> datas, Integer mode, boolean updatePart); } diff --git a/win-module-infra/win-module-infra-biz/src/main/resources/codegen/java/service/serviceImpl.vm b/win-module-infra/win-module-infra-biz/src/main/resources/codegen/java/service/serviceImpl.vm index a732039c..d033469b 100644 --- a/win-module-infra/win-module-infra-biz/src/main/resources/codegen/java/service/serviceImpl.vm +++ b/win-module-infra/win-module-infra-biz/src/main/resources/codegen/java/service/serviceImpl.vm @@ -79,4 +79,28 @@ public class ${table.className}ServiceImpl implements ${table.className}Service return ${classNameVar}Mapper.selectList(exportReqVO); } + @Override + public List<${table.className}ExcelVO> import${table.className}List(List<${table.className}ExcelVO> datas, Integer mode, boolean updatePart) { + if (CollUtil.isEmpty(datas)) { + throw exception(${simpleClassName_underlineCase.toUpperCase()}_IMPORT_LIST_IS_EMPTY); + } + + List<${table.className}ExcelVO> errorList = new ArrayList<>(); + datas.forEach(item -> { + if(errorList == null){ + // 判断如果不存在,在进行插入 + ${table.className}DO obj = ${classNameVar}Mapper.selectByCode(item.getCode()); + if (obj == null&& mode != 3) { + ${classNameVar}Mapper.insert(${table.className}Convert.INSTANCE.convert(item)); + } + else if (obj != null && mode != 2) {// 如果存在,判断是否允许更新 + ${table.className}DO ${classNameVar}DO = ${table.className}Convert.INSTANCE.convert(item); + ${classNameVar}DO.setId(obj.getId()); + ${classNameVar}Mapper.updateById(obj); + } + } + }); + + return errorList; + } } diff --git a/win-module-infra/win-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm b/win-module-infra/win-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm index eaf0d1af..8a67c976 100644 --- a/win-module-infra/win-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm +++ b/win-module-infra/win-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm @@ -55,7 +55,7 @@ - +