29.移转 Aras PLM大小事-额外编码取号(3)

最後讲一段读取下一码流水号的作法
1.根据前端解析到的选项,每一个属性相加之後,在流水号之前的都是前坠码,之後的尾码
2.找出对应的Sequence_TBL主键名称name,则开始读取下一码
3.拆出流水码的位数,并从目前值往上递增
4.重新组成编号

public string GetNextNumber(Sequence_TBL sequence,bool save)
{
    
    int count = (int)sequence.current_number;
    int padding = sequence.digit == null ? 0 :(int)sequence.digit;
    sequence.current_number = count ;
    string water_number = sequence.digit==0? "": sequence.current_number.ToString().PadLeft(padding, '0');
    if (sequence.digit == 1 && sequence.current_number > 9)
    {
        char c = Convert.ToChar((int)sequence.current_number-9 + 64);
        water_number = c.ToString();
    }
    string item_number = sequence.forward + water_number + sequence.suffix;

    var MaxItemNumber = SeqHistoryRepo.FindMax(sequence.forward, sequence.suffix);
    if(MaxItemNumber != null)
    {
        if (string.Compare(item_number, MaxItemNumber.item_number.Trim()) < 0)
        {
            item_number = MaxItemNumber.item_number.Trim();
        }
    }

    if (sequence.digit != 0)
    {

        //当号码已存在则跳下一码
        var seqHistory = SeqHistoryRepo.Find(item_number);
        while (seqHistory != null)
        {
            //判断是否超过最後一个序号
            if (string.Compare(item_number, MaxItemNumber.item_number.Trim()) < 0)
            {
                seqHistory = SeqHistoryRepo.Find(MaxItemNumber.item_number);
            }
            else
            {
                count = (int)sequence.current_number;
                padding = sequence.digit == null ? 0 : (int)sequence.digit;
                sequence.current_number = count + sequence.increase;
                water_number = sequence.digit == 0 ? "" : sequence.current_number.ToString().PadLeft(padding, '0');
                if (sequence.digit == 1 && sequence.current_number > 9)
                {
                    char c = Convert.ToChar((int)sequence.current_number - 9 + 64);
                    water_number = c.ToString();
                }
                item_number = sequence.forward + water_number + sequence.suffix;

                seqHistory = SeqHistoryRepo.Find(item_number);

                //判断是否超过最後一个序号
                if (string.Compare(item_number, MaxItemNumber.item_number.Trim()) < 0)
                {
                    seqHistory = SeqHistoryRepo.Find(MaxItemNumber.item_number);
                }
            }

        }
    }
    if (save == true)
    {
        this.UnitOfWork.Commit();
    }
    return item_number;
}

<<:  30-14 之 Domain Layer - Service

>>:  [Day14] TS:什麽!TypeScript 中还有回圈的概念 - 用 Mapped Type 操作物件型别

[iT铁人赛Day21]疯狂程设介绍+下载

疯狂程设是一个练习CPE常用的软件,疯狂程设拥有许多练习题,不是只有CPE。 如何下载疯狂程设?可以...

Day16 - 准备 GitLab 的 GitOps 环境

GitOps 介绍 GitOps 是一种 DevOps 的解决方式,方法是以 Git 为中心,将应用...

Day7 - 2D渲染环境基础篇 III[ 变形与阵列运算 ] - 成为Canvas Ninja ~ 理解2D渲染的精髓

之前我们有提到过,canvas其实本身可以看做一群像素形成的2维阵列,而Canvas的图像变形,其实...

vue-awesome-swiper swiper1跟2不能同步

各位前辈好 我使用vue-awesome-swiper 3.1.3 vue-cli3 最近想使用第一...

JavaScript入门 Day07_如何使用字串2

今天呢,来讲讲其他有关字串的用法~ 若是我们今天想知道这个字串的第几个字是什麽 那摸 我们就可以使用...