栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

自动生成层级关系编号

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自动生成层级关系编号

思想:
第一级别:先查询数据库中最大的编码,如果不存在则设置第一个编号的格式 例如:101 ,如果存在则最大编码加一 这只是同一级别的编号

第二级别:也是先查询数据库中最大的编码(此时的编码是第二级别的最大编码)如果最大编码不存在则先看传来的父id符不符合要求(因为第一级是没有父id或自定义的id列如:1,第二级后的级别都是有父id的)如果传来的父id是不是默认的则证明是第二级别的第一个编码,只需在查询的编码后加"01"即可,如果查到了,那就最大编码加一

代码如下:

  1. ServuceImpl层(重点看这个 别的无所谓)
public class DeptServiceImpl extends BaseServiceImpl implements DeptService{
 private final String DEFAULT_PARENT_ID="1";//部门默认pid

    @Override
    public int save(Dept mapOrEntiry) {
   //先看看前台传来的pid(父id)是不是空
        String pid=mapOrEntiry.getPid();
        //自定义字符串工具包 单纯的看看pid是不是空
        if(StringUtils.isBlank(pid)){
            pid=DEFAULT_PARENT_ID;
            mapOrEntiry.setPid(pid);
        }
        String maxCode=null;
        //查询最大编码  
        String code= mapper.queryMaxCode(mapOrEntiry.getEuid(),pid);
        if(null==code){
            //如果不存在
            //如果父id是默认的1
            if(DEFAULT_PARENT_ID.equals(pid)){
                maxCode="101";
            }else{
                //如果pid不是默认值  查询部门id为pid的编码
                code=mapper.queryCodeById(mapOrEntiry.getPid());
                //新编码是当前编码code的第一个子编码
                maxCode=code+"01";
            }

        }else{
            //如果存在  假如是101
            maxCode=getNextCode(code);
        }
        mapOrEntiry.setDeptno(maxCode);
        return mapper.save(mapOrEntiry);
    }
    
    String getNextCode(String code){
        int len=code.length();
        String num=code.substring(len-2);
        int newNum=Integer.parseInt(num)+1;
        String newCode=code.substring(0,len-2)+String.format("%02d",newNum);
        return newCode;
    }
}
  1. Mapper层
    mapper.queryCodeById(mapOrEntiry.getPid())的sql语句
 
        select max(d.deptno) deptno
        from s_dept d
        where d.euid = #{euid}
          and d.pid = #{pid}
    

mapper.save(mapOrEntiry)的sql语句

 
        insert into s_dept(id, name, deptno, pid, sorts, note, euid)
        values (uuid(), #{name}, #{deptno}, #{pid}, #{sorts}, #{note}, #{euid})
    
  1. javabean层
@Data
public class Dept {
    @NotBlank(message = "部门id不能为空!",groups = {Modify.class})
    String id;

    @NotBlank(message = "部门名称不能为空!",groups = {Save.class,Modify.class})
    String name;

    String pid;

    int sorts;

    String note;

    String deptno;

    @NotBlank(message = "企业用户id不能为空!",groups = {Save.class})
    String euid;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/891531.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号