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

结果:

相关推荐
愿你天黑有灯下雨有伞5 分钟前
java动态渲染列导出以及分页列表
java
星火开发设计10 分钟前
共用体 union:节省内存的特殊数据类型
java·开发语言·数据库·c++·算法·内存
2301_8035545218 分钟前
阻塞,非阻塞,同步,异步以及linux上的5种IO模型阻塞,非阻塞,信号驱动,异步,IO复用
java·服务器·网络
仰望星空_Star30 分钟前
Java证书操作
java·开发语言
河北小博博33 分钟前
分布式系统稳定性基石:熔断与限流的深度解析(附Python实战)
java·开发语言·python
岳轩子33 分钟前
JVM Java 类加载机制与 ClassLoader 核心知识全总结 第二节
java·开发语言·jvm
J_liaty43 分钟前
Spring Boot + MinIO 文件上传工具类
java·spring boot·后端·minio
2601_949613021 小时前
flutter_for_openharmony家庭药箱管理app实战+药品详情实现
java·前端·flutter
木井巳1 小时前
【递归算法】求根节点到叶节点数字之和
java·算法·leetcode·深度优先
没有bug.的程序员1 小时前
Spring Boot 事务管理:@Transactional 失效场景、底层内幕与分布式补偿实战终极指南
java·spring boot·分布式·后端·transactional·失效场景·底层内幕