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;
    }

结果:

相关推荐
Zzxy几秒前
Spring Boot 参数校验
java·spring boot
黑眼圈子6 分钟前
总结一下用Java做算法的常用类和方法
java·开发语言·算法
Magic--18 分钟前
深入解析管道:最基础的进程间通信(IPC)实现
java·服务器·unix
架构师沉默1 小时前
为什么国外程序员都写独立博客,而国内都在公众号?
java·后端·架构
带刺的坐椅1 小时前
SolonCode v2026.4.1 发布(比 ClaudeCode 简约的编程智能体)
java·ai·llm·agent·solon-ai·claudecode·soloncode
殷紫川1 小时前
从单体到亿级流量:登录功能全场景设计指南,踩过的坑全给你填平了
java
Filwaod1 小时前
Cursor+IDEA开发问题
java·idea·cursor
爱丽_1 小时前
Spring 事务:传播行为、失效场景、回滚规则与最佳实践
java·后端·spring
Zzxy1 小时前
Spring Boot集成Swagger/Knife4j
spring boot·swagger
timi先生1 小时前
语料库全栈项目部署 (Vue + Java + CQPweb)
java·前端·vue.js