SpringBoot实现单号生成功能(Java&若依)

一、代码

关键实现逻辑

java 复制代码
    /**
     * 生成工单编号
     */
    @Override
    public String genTaskNo(){
        // 1.获取当前时间
        String currentDate = DateTimeFormatter.ofPattern("yyyyMMdd").format(LocalDate.now());
        // 2.查询数据库中该前缀的当前日期的最大单据编号
        String prefix = "TNo.";
        String maxTaskNo = cmsTaskMapper.findCmsTaskMaxTaskNo(prefix, currentDate);
        // 3.初始化单据编号
        String newTaskNo = prefix + currentDate + "001";
        // 4.判断是否已存在
        if (StringUtils.isNotEmpty(maxTaskNo)){
            int serialStartIndex = prefix.length() + 8;
            String numberPart = maxTaskNo.substring(serialStartIndex);
            int number = Integer.parseInt(numberPart);
            number++;
            newTaskNo = prefix + currentDate + String.format("%03d", number);
        }
        return newTaskNo;
    }
  • mapper.xml
sql 复制代码
    <!-- 查询最大单号 -->
    <select id="findCmsTaskMaxTaskNo" resultType="String">
        select max(t.task_no) from cms_task t
        where t.task_no like concat(#{prefix},#{currentDate},'%')
    </select>
sql 复制代码
    /**
     * 查询工单最大编号
     * @param prefix
     * @param currentDate
     * @return
     */
    public String findCmsTaskMaxTaskNo(@Param("prefix") String prefix, @Param("currentDate") String currentDate);

controller层

java 复制代码
    /**
     * 获取工单管理详细信息
     */
    @PreAuthorize("@ss.hasPermi('cms:task:query')")
    @GetMapping(value = {"/","/{id}"})
    public AjaxResult getInfo(@PathVariable(value = "id", required = false) Long id)
    {
        AjaxResult ajax = AjaxResult.success();
        ajax.put("tts",cmsTasktypeService.selectCmsTasktypeAll());
        ajax.put("taskNo",cmsTaskService.genTaskNo());
        if (StringUtils.isNotNull(id)){
            ajax.put(AjaxResult.DATA_TAG, cmsTaskService.selectCmsTaskById(id));
        }
        logger.info("查询工单管理信息:{}", JSON.toJSONString(ajax, JSONWriter.Feature.PrettyFormat));
        return ajax;
    }

结果:

相关推荐
Json____3 分钟前
java-宿舍安全卫生检查系统项目源码
java·前端·javascript·课程设计·it学习·wwwoop.com
zzzll111117 分钟前
LangChain4j:Java 生态的 AI 应用开发利器
java·开发语言·人工智能
2601_9620710029 分钟前
【Java EE】SpringBoot的创建与简单使用
spring boot·后端·java-ee
2601_9673387136 分钟前
尚硅谷2026尚硅谷Java全栈+Python智能体教程
java·人工智能
摇滚侠1 小时前
《SpringBoot 3:入门与应用实战》第 9 章 使用 WebMvc 开发进阶 阅读笔记 24
spring boot·笔记·后端
用户3126874877201 小时前
HashMap 到底怎么扩容的?源码级链路拆解
java
摇滚侠1 小时前
《SpringBoot 3:入门与应用实战》第 9 章 使用 WebMvc 开发应用 阅读笔记 22
javascript·spring boot·笔记
孙克旭_1 小时前
单链表进阶实操:5 道常考面试题详细解析【Java 实现】
java·开发语言·数据结构·单链表
2601_961901701 小时前
SpringCloud2023集成Nacos2.4.3
java
玄昌盛不会编程1 小时前
LeetCode——2091. 从数组中移除最大值和最小值
java·算法·leetcode