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

结果:

相关推荐
Sylvia-girl8 小时前
IO流~~
java·开发语言
冰暮流星8 小时前
javascript之数组
java·前端·javascript
Re.不晚8 小时前
JAVA进阶之路——无奖问答挑战3
java·开发语言
不倒翁玩偶9 小时前
IDEA导入新的SpringBoot项目没有启动按钮
java·spring boot·intellij-idea
小小小米粒9 小时前
Maven Tools
java
kali-Myon9 小时前
2025春秋杯网络安全联赛冬季赛-day1
java·sql·安全·web安全·ai·php·web
我是咸鱼不闲呀9 小时前
力扣Hot100系列20(Java)——[动态规划]总结(下)( 单词拆分,最大递增子序列,乘积最大子数组 ,分割等和子集,最长有效括号)
java·leetcode·动态规划
清水白石0089 小时前
深入解析 LRU 缓存:从 `@lru_cache` 到手动实现的完整指南
java·python·spring·缓存
符哥200810 小时前
C++ 进阶知识点整理
java·开发语言·jvm
Sayuanni%310 小时前
初阶_多线程1(线程含义与关键属性)
java