TSerialNumberInfoServiceImpl.java 3.95 KB
Newer Older
1 2
package com.zehong.system.service.impl;

耿迪迪's avatar
耿迪迪 committed
3
import com.zehong.common.exception.CustomException;
4 5
import com.zehong.common.utils.DateUtils;
import com.zehong.system.domain.TSerialNumberInfo;
耿迪迪's avatar
耿迪迪 committed
6
import com.zehong.system.mapper.TSerialNumberInfoMapper;
7
import com.zehong.system.service.ITSerialNumberInfoService;
耿迪迪's avatar
耿迪迪 committed
8 9 10 11 12 13
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98

/**
 * 序列号Service业务层处理
 * 
 * @author zehong
 * @date 2024-06-07
 */
@Service
public class TSerialNumberInfoServiceImpl implements ITSerialNumberInfoService 
{
    @Autowired
    private TSerialNumberInfoMapper tSerialNumberInfoMapper;

    /**
     * 查询序列号
     * 
     * @param numberId 序列号ID
     * @return 序列号
     */
    @Override
    public TSerialNumberInfo selectTSerialNumberInfoById(Long numberId)
    {
        return tSerialNumberInfoMapper.selectTSerialNumberInfoById(numberId);
    }

    /**
     * 查询序列号列表
     * 
     * @param tSerialNumberInfo 序列号
     * @return 序列号
     */
    @Override
    public List<TSerialNumberInfo> selectTSerialNumberInfoList(TSerialNumberInfo tSerialNumberInfo)
    {
        return tSerialNumberInfoMapper.selectTSerialNumberInfoList(tSerialNumberInfo);
    }

    /**
     * 新增序列号
     * 
     * @param tSerialNumberInfo 序列号
     * @return 结果
     */
    @Override
    public int insertTSerialNumberInfo(TSerialNumberInfo tSerialNumberInfo)
    {
        return tSerialNumberInfoMapper.insertTSerialNumberInfo(tSerialNumberInfo);
    }

    /**
     * 修改序列号
     * 
     * @param tSerialNumberInfo 序列号
     * @return 结果
     */
    @Override
    public int updateTSerialNumberInfo(TSerialNumberInfo tSerialNumberInfo)
    {
        tSerialNumberInfo.setUpdateTime(DateUtils.getNowDate());
        return tSerialNumberInfoMapper.updateTSerialNumberInfo(tSerialNumberInfo);
    }

    /**
     * 批量删除序列号
     * 
     * @param numberIds 需要删除的序列号ID
     * @return 结果
     */
    @Override
    public int deleteTSerialNumberInfoByIds(Long[] numberIds)
    {
        return tSerialNumberInfoMapper.deleteTSerialNumberInfoByIds(numberIds);
    }

    /**
     * 删除序列号信息
     * 
     * @param numberId 序列号ID
     * @return 结果
     */
    @Override
    public int deleteTSerialNumberInfoById(Long numberId)
    {
        return tSerialNumberInfoMapper.deleteTSerialNumberInfoById(numberId);
    }
耿迪迪's avatar
耿迪迪 committed
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132

    /**
     * 根据表类型获取序列号
     * @param tableType 表表类型
     * @return
     */
    @Override
    public synchronized Map<String,String> getSerialNumberByTableType(String tableType){
        //获取最新编号
        TSerialNumberInfo tSerialNumberInfo = new TSerialNumberInfo();
        tSerialNumberInfo.setTableType(tableType);
        List<TSerialNumberInfo> serialNumberInfoList = tSerialNumberInfoMapper.selectTSerialNumberInfoList(tSerialNumberInfo);
        Map<String,String> numberMap = new HashMap<>();
        //更新编号
        serialNumberInfoList.stream().forEach(item ->{
            //自旋更新
            int result;
            int lookNum = 0;
            do{
                lookNum ++;
                Long maxNum = item.getMaxNum();
                maxNum++;
                maxNum = maxNum.toString().length() > item.getNumLength() ? 0 : maxNum;
                String number = String.format("%0"+ item.getNumLength() +"d",maxNum);
                numberMap.put(item.getColumnName(),number);
                item.setMaxNum(maxNum);
                result = tSerialNumberInfoMapper.updateTSerialNumberInfo(item);
                if(result == 0) item = tSerialNumberInfoMapper.selectTSerialNumberInfoById(item.getNumberId());
            }while (result == 0 && lookNum < 5);
            if(lookNum > 4) throw new CustomException("序列号生成失败");
        });
        return numberMap;
    }

133
}