diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/CodeGeneratorController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/CodeGeneratorController.java index ba30885..1b8c4b5 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/CodeGeneratorController.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/CodeGeneratorController.java @@ -19,4 +19,10 @@ public class CodeGeneratorController { public String genCode(@PathVariable String prefix) { return gen.nextCode(prefix); } + + + @GetMapping("/max/{prefix}") + public Long maxCode(@PathVariable String prefix) { + return gen.maxCode(prefix); + } } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/CodeGeneratorService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/CodeGeneratorService.java index a652eef..f4af6d5 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/CodeGeneratorService.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/CodeGeneratorService.java @@ -3,4 +3,6 @@ package com.ruoyi.oa.service; public interface CodeGeneratorService { String nextCode(String prefix) ; + + Long maxCode(String prefix); } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/CodeGeneratorServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/CodeGeneratorServiceImpl.java index 5a56e7b..369718f 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/CodeGeneratorServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/CodeGeneratorServiceImpl.java @@ -23,4 +23,14 @@ public class CodeGeneratorServiceImpl implements CodeGeneratorService { String padded = String.format("%07d", num); return prefix + "-" + padded; // e.g. TH-0000001 } + + + + @Transactional(rollbackFor = Exception.class) + @Override + public Long maxCode(String prefix) { + mapper.upsertAndIncr(prefix); // 原子插/更 + long num = mapper.getLastSeq(); // 拿到新的序号 + return num-1L; // + } }