SysCodeUtil.java 2.6 KB
package com.pashanhoo.common.util.SysCode;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

@Component
public class SysCodeUtil {
    @Autowired
    private SysCodeMapper sysCodeMapper;

    /**
     * 编号生成规则
     * @param sysCodeVO
     * @return
     */
    public  String getSequence(SysCodeVO sysCodeVO){
        //1、查询数据是否存在
        SysCodeDO sysCodeDO=queryInfoByCondition(sysCodeVO);
        String  taskvalue="";
        if(sysCodeDO!=null){
            String lastString=sysCodeDO.getTaskvalue().substring(sysCodeDO.getTaskvalue().length()-Integer.valueOf(sysCodeDO.getTaskchild()));
            String firstString=sysCodeDO.getTaskvalue().substring(0,(sysCodeDO.getTaskvalue().length()-Integer.valueOf(sysCodeDO.getTaskchild())));
            //2、如果存在在修改编号值
            taskvalue=firstString+Integer.valueOf(lastString)+1;
            sysCodeDO.setTaskvalue(taskvalue);
            sysCodeMapper.updateById(sysCodeDO);
        }else {
            //3、不存在则新增
            SysCodeDO sysCodeDO1=new SysCodeDO();
            sysCodeDO1.setCtype(sysCodeVO.getCtype());
            sysCodeDO1.setState("1");
            sysCodeDO1.setTaskno(sysCodeVO.getTaskno());
            sysCodeDO1.setTaskname(sysCodeVO.getTaskname());
            taskvalue= getTaskValue(Integer.valueOf(sysCodeVO.getTaskchild()));
            sysCodeDO1.setTaskvalue(sysCodeVO.getTaskno()+taskvalue);
            sysCodeDO1.setTaskchild(sysCodeVO.getTaskchild()+"");
           sysCodeMapper.insert(sysCodeDO1);
        }
        return taskvalue;
    }

    private  SysCodeDO queryInfoByCondition(SysCodeVO sysCodeVO){
        QueryWrapper<SysCodeDO> wrapper = new QueryWrapper<>();
        wrapper.eq(sysCodeVO.getCtype()!=null && !"".equals(sysCodeVO.getCtype()),"CTYPE",sysCodeVO.getCtype());
        wrapper.eq(sysCodeVO.getTaskno()!=null && !"".equals(sysCodeVO.getTaskno()),"TASKNO",sysCodeVO.getTaskno());
        wrapper.eq("STATE","1");
        wrapper.eq(sysCodeVO.getTaskchild()!=null && !"".equals(sysCodeVO.getTaskchild()),"TASKCHILD",sysCodeVO.getTaskchild());
        SysCodeDO sysCodeDO=sysCodeMapper.selectOne(wrapper);
        return sysCodeDO;

    }
    private  String  getTaskValue(int length){
        List<String> list=new ArrayList<String>(length-1);
        String num="";
        for (int i = 0; i <list.size() ; i++) {
            num+="0";
        }
        num=num+1;
        return num;
    }


}