模板维护-模板测试

 前面写了关于模板分析的父模板和子模板解析,今天把最后的内容完成!

   

主要是12位编码的生成过程

第一步:

定义前六位:

string matlcatehigh =string.Empty;

定义后六位:

string matlcateLow ="FFFFFF";

定义一个变量:

string Templetid = string.Empty;(关于这个变量 当M和S不同时,值也是不相同的)

首先判断是否有主模板的存在(意思同:子模板存在::符号)

后六位的第一位就是选择子模板的系列号

前六位的取值,选中树的事件中就可以获得,所以matlcatehigh的获取不是重点。

第二步:

进入for循环语句 目的是获得编码的后六位

依次对dataview的每行 获取编码

例:

首先定义三个为空的字符串

    string smblx =string.Empty;

    string nstart =string.Empty;

    string nend =string.Empty;

 

获取一行 数据为z,x,y 将其转化为数组形式 根据对数组长度的判断依次把z,x,y赋值

Smblx=z  nstart=x nend=y

 

对x 和y 进行为空判断  如果不为空

要保证x是不大于y的

然后定义一个变量ncounts = y-x+1

 

在这里要获取最大站位数midnend

如果nend是正数,则最大站位数midnend =y

否则最大站位数midnend =0

 

对z进行判断 是否为空和等于M和S

如果等于M

获取dataview 的值为Templetid

 

如果等于S

对z判断是否存在 + - * / 等运算符 ( 个人理解:关于 *  / 的判断是多余的,因为最后的取值都是用零去乘以或者除以一个数值,最后结果还是0.

下面只进行 + -的判断 如果存在 就取 表达式 + - 后面的数值,进行字符串转化,赋值给 Templetid。

 

下面这段代码 不管是M和S都要运行的:

对Templetid进行为空判断  如果不为空

比较ncounts和Templetid的长度

如果前者大于后者则定义一个变量oncounts

oncounts = ncounts- Templetid.length 然后进行循环 对Templetid进行赋值

for (int j = 0; j < oncounts; j++)

     {

        Templetid = "0" + Templetid;

     }

如果前者不大于后者则

Templetid = Templetid.Substring(0, ncounts);

 

最后就可以用到上面定义的变量了,通过下面这段代码得到后六位编码:

matlcateLow=matlcateLow.Substring(0,Convert.ToInt16(x)-1)+Templetid+matlcateLow.Substring(Convert.ToInt16(y), matlcateLow.Length - (Convert.ToInt16(y)));

  第三步:

循环结束后:

如果后六位数值中还存在F

临时总编码 = matlcatehigh +matlcateLow. Substring(0,midnend)(midnend上面提到是最大站位)

如果后六位数值中不存在F

临时总编码 =  前六位+后六位

 

最后对隐藏域hidmatlcode是否为空

如果是空 则将新得到的临时总编码作为参数,调用方法(取出完整物资编号)去数据库进行查询,结果就是最终总编码。

如果不为空 则根据临时总编码截取hidmatlcode的字符串 得到新的编码 和临时总编码进行对比,如果相等,则将hidmatlcode赋值最终总编码 如果不等,则再次调用方法(取出完整物资编号)去数据库进行查询,结果就是最终总编码。

第四步:

取出完整物资编号的方法解析

if (matlcateall != null &&!string.IsNullOrEmpty(matlcateall.Trim())) 

如果数据为空(Null),则要为Null后面一直加0,直到等于12位

取出后六位 对后六位进行处理,如下编码:

string matlcode =Convert.ToString((Convert.ToInt64(matlcateallcode) + 1));

如果matlcode 不等于6 就要在前面补0

如果数据不为空

Matlzero =” 000000000000”

matlcateall=matlcates+matlzero.Substring(matlcates.Length,matlzero.Length- matlcates.Length);

 

posted @ 2015-08-31 19:45  PCLOVE1123  阅读(200)  评论(0编辑  收藏  举报