From f9dcbd62b0c5b36ece252564ce9caed9f9e64ba4 Mon Sep 17 00:00:00 2001 From: han0 Date: Tue, 12 Dec 2023 09:34:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(material):=20=E6=96=B0=E5=A2=9E=E7=94=9F?= =?UTF-8?q?=E6=88=90=E7=BC=96=E5=8F=B7=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/controller/MaterialController.java | 23 ++++++++++++++ .../xinke/main/service/MaterialService.java | 30 +++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/src/main/java/mjkf/xinke/main/controller/MaterialController.java b/src/main/java/mjkf/xinke/main/controller/MaterialController.java index ee8fa44..fb396be 100644 --- a/src/main/java/mjkf/xinke/main/controller/MaterialController.java +++ b/src/main/java/mjkf/xinke/main/controller/MaterialController.java @@ -132,4 +132,27 @@ public class MaterialController { return FuHttpResponse.Builder().dataResponse(data).build(); } + + @ApiOperation("生成编号") + @PostMapping("/id") + public HttpResponse createId ( + @ApiParam(value = "父 id") @RequestParam(value="parent_id") String parentId + ) throws Exception { + var query = new LambdaQueryWrapper(); + query.eq(Material::getParentId, parentId); + query.orderByDesc(Material::getId); + var data = materialService.list(query); + String maxBrotherId; + if (data == null) { + maxBrotherId = null; + } else { + maxBrotherId = data.get(0).getId(); + } + + String materialId = materialService.createNewMaterialId(parentId, maxBrotherId); + var result = Map.of("material_id", materialId); + return FuHttpResponse.Builder().dataResponse(result).build(); + } + + } diff --git a/src/main/java/mjkf/xinke/main/service/MaterialService.java b/src/main/java/mjkf/xinke/main/service/MaterialService.java index f2b3b58..6c7c583 100644 --- a/src/main/java/mjkf/xinke/main/service/MaterialService.java +++ b/src/main/java/mjkf/xinke/main/service/MaterialService.java @@ -7,6 +7,36 @@ import org.springframework.stereotype.Service; @Service public class MaterialService extends ServiceImpl, Material> { + public String createNewMaterialId(String parentId, String maxBrotherId) { + String prefix; + String suffix; + String previous; + if (parentId.contains("00.00.00.00")) { + prefix = ""; + suffix = ".00.00.00"; + previous = maxBrotherId.substring(0, 2); + } else if (parentId.contains("00.00.00")) { + prefix = parentId.substring(0, 3); + suffix = ".00.00"; + previous = maxBrotherId.substring(3, 5); + } else if (parentId.contains("00.00")) { + prefix = parentId.substring(0, 6); + suffix = ".00"; + previous = maxBrotherId.substring(6, 8); + } else if (parentId.contains("00")) { + prefix = parentId.substring(0, 9); + suffix = ""; + previous = maxBrotherId.substring(9, 11); + } else { + return null; + } + var current = Integer.valueOf(previous) + 1; + if (current < 60) { + current = 60; + } + + return prefix + String.format("%02d", current) + suffix; + } }