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

结果:

相关推荐
for_ever_love__4 小时前
MySQL 全文索引实战:FULLTEXT、ngram 中文分词与 MATCH AGAINST 到底该怎么用
java·python·mysql·全文检索·分词·索引·ngram
java资料站4 小时前
五、Spring AI Alibaba · Memory · Saver(短期会话)
java·spring·microsoft
夜之眷属5 小时前
Core dump 崩溃排查:JVM 宕机后,那份 core 文件怎么用 gdb 还原现场
java·运维·服务器·jvm
波加曼大王5 小时前
# vLLM不要迷信PagedAttention神话,聊聊线上藏着的内部碎片陷阱
java·架构
SL_staff6 小时前
目标健康度自检清单:开发者视角下的目标-计划-任务链路断点诊断
java·开源·github
for_ever_love__6 小时前
MySQL 高频面试题 30 问:索引、事务、锁、日志、主从与分库分表(MySQL 8.0 版)
java·数据库·spring boot·mysql·spring cloud·面试·总结
神仙别闹6 小时前
基于C++实现的贪吃蛇游戏平台
java·c++·游戏
布吉岛的石头6 小时前
Java 程序员第 49 阶段11:Java 接 BERT:用 ONNX Runtime 做句向量推理
java·人工智能·python·深度学习·bert·transformer
niucloud-admin6 小时前
JAVA V6 多商户商城 开发文档——JAVA服务端
java·开发语言
SL_staff6 小时前
设备越多系统越崩?根源在三层抽象失效
spring boot·物联网·github